nginx:502使用node.js varnish和stunnel的时候坏了网关

我一直在关注这个教程 ,除了我的nginx设置,一切似乎都运行正常。 我的node.js应用程序在端口1337上运行,varnish在端口80上运行,443上的stunnel和8080上的nginx。

当我指定端口https://example.com:1337时,我可以正确地到达我的应用程序,但访问https://example.com时得到的是502 Bad Gateway错误。

这是我的nginx日志的输出:

 2012/08/25 14:13:59 [error] 6049#0: *1 no live upstreams while connecting to upstream, client: 127.0.0.1, server: example.com, request: "GET / HTTP/1.1", upstream: "http://app_example/", host: "example.com" 2012/08/25 14:14:02 [error] 6049#0: *1 upstream prematurely closed connection while reading response header from upstream, client: 127.0.0.1, server: example.com, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:1337/", host: "example.com" 

这是我的那个域的nginxconfiguration文件:

 upstream example.com { server 127.0.0.1:1337; } server { server_name example.com; listen 8080; location / { proxy_pass http://example.com; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } 

我在跑:

  • Ubuntu 12.04
  • nginx的/ 1.1.19
  • stunnel 4.42
  • 清漆-3.0.2

所以第一件事..该链接说,他们只使用nginx的静态文件和HTML文件的网站。 您正试图通过nginx代理nodejs / websockets。

那么为什么该网站说不要那样做呢? 主要是因为稳定版本的nginx不支持websockets。

Websockets是一个1.1规范,nginx只是1.0规范。 现在说..你可以像tcp_proxy为nginx编译,但只是代理与像指出的url清漆。 这并没有太大的意义

varnish-> nginx->节点

做就是了

清漆 – >节点