2

public static javascript および css ファイルを正常に提供する基本ノード/エクスプレス サーバーをセットアップしましたが、画像を提供しようとすると 404 エラーが返されます。

最も奇妙な部分は、ローカルで実行するとすべてが正常に機能することです。リモート サーバー (linode) で実行すると、画像の問題が発生します。

本当に頭を悩ませています...何が問題なのですか?

サーバーは次のとおりです。

/**
 * Module dependencies.
 */

var express = require('express')
  , routes = require('./routes')

var app = module.exports = express.createServer();

// Configuration

app.configure(function(){
  app.set('views', __dirname + '/views');
  app.set('view engine', 'jade');
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(express.compiler({ src: __dirname + '/public', enable: ['less'] }));
  app.use(express.static(__dirname + '/public'));
  app.use(app.router);
});

app.configure('development', function(){
  app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); 
});

app.configure('production', function(){
  app.use(express.errorHandler()); 
});

// Globals

app.set('view options', {
  sitename: 'Site Name', 
  myname: 'My Name'
});

// Routes

app.get('/', routes.index);
app.get('/*', routes.fourohfour);

app.listen(3000);
console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env);
4

4 に答える 4

2

ローカルで正常に動作する場合は、大文字と小文字の区別の問題である可能性があります。ファイルに大文字などがありますか?

于 2012-05-02T15:42:26.113 に答える
1

私はこの問題を抱えていましたが、末尾の .JPG 拡張子に大文字があり、html で .jpg を呼び出していました。Windows はファイルの種類で大文字と小文字を区別しませんが、CentOS は...

于 2015-09-13T16:25:29.457 に答える
0

了解しました。画像フォルダの名前を「/public/images」から/public/ imageに変更することで、この問題を回避しました。名前が問題になる理由はわかりませんが、必要なのはそれだけでよかったです。

于 2012-05-03T18:33:25.277 に答える
0

私はこの正確な問題を抱えていました。にアップロードされたすべてのユーザー生成画像/static/uploadsが高速でレンダリングされていませんでした。奇妙なことにstatic/images、 、static/js、 のすべてstatic/cssがうまくいきました。パーミッションの問題ではないことを確認しましたが、それでも 404 が返されました。

それでも Express が画像をレンダリングしない理由を知りたいです。

誰かがこの問題を抱えている場合、これが私のNGINX confです。

server {

    # listen for connections on all hostname/IP and at TCP port 80
    listen *:80;

    # name-based virtual hosting
    server_name staging.mysite.com;

    # error and access outout
    error_log /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;

    location / {
            # redefine and add some request header lines which will be transferred to the proxied server
            proxy_set_header                X-Real-IP $remote_addr;
            proxy_set_header                X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header                 Host $http_host;
            proxy_set_header                X-NginX-Proxy true;

            #set the location of the web root
            root /var/www/mysite.com;

            # set the address of the node proxied server. port should be the port you set in express
            proxy_pass                      http://127.0.0.1:9001;

            # forbid all proxy_redirect directives at this level
            proxy_redirect                  off;
    }

    # do a case insensitive regular expression match for any files ending in the list of extentions
    location ~* ^.+\.(html|htm|png|jpeg|jpg|gif|pdf|ico|css|js|txt|rtf|flv|swf)$ {

            # location of the web root for all static files
            root /var/www/mysite.com/static;

            # clear all access_log directives for the current level
            #access_log off;

            # set the Expires header to 31 December 2037 23:59:59 GMT, and the Cache-Control max-age to 10 years
            #expires max;
    }
}
于 2013-01-30T18:05:44.487 に答える