nginx:使用 Node.js varnish 和 stunnel 時出現 502 錯誤網關

nginx:使用 Node.js varnish 和 stunnel 時出現 502 錯誤網關

我一直在關注本教程,除了我的 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->節點

做就是了

清漆 -> 節點

相關內容