nginx: 502 Bad Gateway bei Verwendung von Node.js Varnish und Stunnel

nginx: 502 Bad Gateway bei Verwendung von Node.js Varnish und Stunnel

Ich verfolgedieses Tutorial, und alles scheint einwandfrei zu laufen, bis auf mein Nginx-Setup. Meine node.jsAnwendung läuft auf Port 1337, Varnish auf Port 80, Stunnel auf 443 und Nginx auf 8080.

Ich kann meine App korrekt erreichen, wenn ich den Port angebe https://example.com:1337, aber beim Besuch erhalte ich nur https://example.comeine 502 Bad GatewayFehlermeldung.

Dies ist die Ausgabe meines Nginx-Protokolls:

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"

und dies ist meine Nginx-Konfigurationsdatei für diese Domäne:

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;
    }
}

Ich renne:

  • Ubuntu 12.04
  • nginx/1.1.19
  • stunnel 4.42
  • Lack-3.0.2

Antwort1

Also als Erstes... dieser Link besagt, dass sie nginx nur für statische Dateien und HTML-Dateien für die Website verwenden. Sie versuchen, nodejs/websockets über nginx zu proxyen.

Warum wird auf der Website davon abgeraten? Hauptsächlich, weil WebSockets in einer stabilen Version von Nginx nicht unterstützt werden.

Websockets sind eine 1.1-Spezifikation und nginx ist nur eine 1.0-Spezifikation. Nun, das heißt... Sie können es wie tcp_proxy für nginx kompilieren, aber es einfach mit Varnish als Proxy verwenden, wie diese URL gezeigt hat. Es macht nicht viel Sinn,

Lack->Nginx->Knoten

mach einfach

Lack -> Knoten

verwandte Informationen