我已经尝试了很多事情,我正在 nginx 服务器上使用 ExpressJS 运行 NodeJS 应用程序,只要我将 :3000 (或任何其他端口)添加到我的 url 中,一切都会正常
http://162.209.01.01:3000
显示正确的 Node 应用程序
http://162.209.01.01
显示 nginx 欢迎页面(欢迎来到 nginx,如果您看到此页面...)
我想将端口 3000 映射到端口 80,这样我就可以加载 Node 应用程序,而无需在 URL 中输入端口。
这是我的sites-enabled/default
文件:
upstream testApp {
server 127.0.0.1:3000;
keepalive 64;
}
server {
listen 80;
server_name .testApp;
access_log /var/log/nginx/simplyAsk.log;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For
$proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
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_pass http://162.209.01.01;
proxy_redirect off;
proxy_http_version 1.1;
}
}
这是我的 bin/www
文件:
#!/usr/bin/nodejs
var debug = require('debug')('my-application');
var app = require('../app');
app.set('port', process.env.PORT || 3000);
var server = app.listen(app.get('port'), function() {
debug('Express server listening on port ' + server.address().port);
});
最佳答案
您的 proxy_pass
声明有点不对劲。
尝试以下操作。
proxy_pass http://testApp/;
关于node.js - 如果 url 中没有端口号,nginx 上的 NodeJs 将无法工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30097334/