【发布时间】:2015-02-26 07:46:14
【问题描述】:
我有一个使用 NginX 的设置,它从 /var/www 的根目录提供一个 php 网站,并在我的服务器上的特定子目录上代理 Nodejs/Express。这是server{}块内/etc/nginx/sites-enabled/default中Nodejs的相关配置:
location /subdir/ {
proxy_pass http://localhost:8000;
proxy_redirect off;
proxy_http_version 1.1
proxy_set_header X-Real-IP $remote_addr;
proxy_redirect off;
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;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_cache_bypass $http_upgrade;
}
这是我的 Nodejs 应用程序的代码:
var port = 8000;
var http = require('http');
var express = require('express');
var app = express();
var server = http.createServer(app).listen(port);
var io = require('socket.io').listen(server);
app.use(express.static(__dirname + '/site'));
app.get('/subdir/', function(req, res) {
res.sendFile(__dirname + '/site/index.html');
});
server.listen(port, function() {
console.log("Listening on port " + port + "...");
});
io.on('connection', function(socket) {
console.log("A user connected");
});
在大多数情况下,一切正常,当我在http://server/subdir/ 访问我的服务器时,我得到了我期望的 index.html 文件。但是,当我直接在浏览器中访问文件时,即使文件存在,我也会在其他静态内容(如 http://server/subdir/css/main.css 404 (Not Found) 或 Cannot GET /sudir/css/main.css 错误)上收到 404 错误。
为什么 Node/Express 找不到我的静态内容?
或者,我怎样才能让 NginX 为我的静态内容提供服务?我什至尝试在 location /subdir/ {} 块中添加 root 语句以指向 Node/Express 项目目录,但仍然出现 404 错误。
【问题讨论】:
-
@teleaziz 我的服务器托管在72.53.66.228,nodejs 托管在72.53.66.228/CAH
标签: javascript node.js express nginx