我一直在關注本教程,除了我的 nginx 設定之外,一切似乎都運作正常。我的node.js
應用程式在連接埠 1337 上運行,varnish 在連接埠 80 上運行,stunnel 在 443 上運行,nginx 在 8080 上運行。
當我指定端口時,我可以正確訪問我的應用程序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"
這是我的該網域的 nginx 設定檔:
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;
}
}
我在跑:
- 烏班圖12.04
- nginx/1.1.19
- 隧道4.42
- 清漆-3.0.2
答案1
首先,該連結表示他們僅使用 nginx 來處理網站的靜態檔案和 html 檔案。您正在嘗試透過 nginx 代理 nodejs/websockets。
那為什麼該網站說不要這樣做呢?主要是因為穩定版的 nginx 不支援 websocket。
Websockets 是 1.1 規範,而 nginx 只是 1.0 規範。話雖如此,您可以像 nginx 的 tcp_proxy 一樣編譯,但只需像 url 指出的那樣使用 varnish 代理它。去沒有太大意義
清漆->nginx->節點
做就是了
清漆 -> 節點