如果我像这样运行我的expressjs应用程序:coffee server.coffee
并导航到localhost:8080
,一切正常。
但是,当我使用以下配置使用nginx反向代理8080时:
server {
listen 0.0.0.0:80;
server_name localhost;
access_log /var/log/nginx/nodetest.log;
location / {
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_pass http://node/;
proxy_redirect off;
}
}
upstream node {
server 127.0.0.1:8080;
}
我在Chrome开发者控制台中收到以下错误:
GET http://184.73.217.204/socket.io/xhr-polling//1300750540040 502 (Bad Gateway)
以及nginx的error.log
2011/03/22 13:07:59 [error] 10269#0: *18 upstream prematurely closed connection while
reading response header from upstream, client: 168.229.58.68, server: localhost,
request: "GET /socket.io/xhr-polling//1300799281533 HTTP/1.1", upstream:
"http://127.0.0.1:8080/socket.io/xhr-polling/1300799281533", host: "184.73.217.204",
referrer: "http://184.73.217.204/"
任何指导赞赏!
答案 0 :(得分:23)
试试这个补丁...
-proxy_pass http://node/; +proxy_pass http://node;
答案 1 :(得分:1)
我是使用nginx
和forever
与nodejs
/ meanjs
设置VMS的新手。我的目标是配置一个代理,以便能够在默认端口80上而不是从端口3000上提供我的应用程序。
虽然在各种不同的在线示例中使用nginx服务器块片段摸索,但我开始使用" 502 Bad Gateway"错误。通过大量的反复试验,我终于能够解决这个问题了。
最后,似乎使用forever
启动node
的等效方式最终会产生截然不同的结果。
当使用节点脚本的绝对路径从服务器的根发出时,此命令失败并显示502:
$ cd /
$ sudo forever start --spinSleepTime 10000 /var/www/mydomain.com/server.js
实际上,如果node
根本没有运行,我也会收到502错误。
两种可行的方法是从我的项目的根目录开始forever
而不指定节点脚本的路径(只是文件名)或者再次从服务器的根目录开始但是使用sourceDir
选项:
$ cd /var/www/mydomain.com
$ sudo forever start --spinSleepTime 10000 server.js
或者:
$ cd /
$ sudo forever start --spinSleepTime 10000 --sourceDir /var/www/shotplot.info/ server.js
为了完整起见,我还将包含nginx服务器块,以防有助于提供一些额外的上下文:
upstream nodejs \{
server 127.0.0.1:3000;
}
server {
root /var/www/mydomain.com;
server_name mydomain.com www.mydomain.com;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://nodejs;
proxy_redirect off;
}
}