Ich verfolgedieses Tutorial, und alles scheint einwandfrei zu laufen, bis auf mein Nginx-Setup. Meine node.js
Anwendung 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.com
eine 502 Bad Gateway
Fehlermeldung.
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