Ich versuche, statische Dateien von Nginx 1.6 und Proxy-Socket-Verkehr von Node.js Web-Server mit socket.io zu dienen.Socket.io mit Nginx
Dies ist der relevante Teil der nginx.conf:
location /socket.io/ {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
}
Es funktioniert perfekt direkt zwischen dem Browser und Node.js, aber socket.io dauert zu lange, wenn sie mit nginx 1.6 proxied. Ein Handshaking-Protokoll benötigt zu viel Zeit, aber wenn es nicht unterbrochen wird, beginnt es nach einigen Minuten zu arbeiten.
Statische Dateien Lieferung von Nginx funktioniert einwandfrei.
Was könnte das Problem sein?
UPDATE:
ich ein bisschen den Netzwerkverkehr analysiert und festgestellt, dass die folgende Anfrage dauert etwa eine Minute (es ist genau das, wenn die Aktualisierung angefordert wird):
Sec-WebSocket-Key: LhZ1frRdl+myuwyR/T03lQ==
Cookie: io=1-A7tpvwmoGbrSvTAAA5
Connection: keep-alive, Upgrade
Upgrade: websocket
....
Die erwartete Antwort ist Code 101 und:
Connection: upgrade
Sec-WebSocket-Accept: HXx3KKJadQYjDa11lpK5y1nENMM=
Upgrade: websocket
...
stattdessen das br owser erhält und:
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: http://localhost:8888
Connection: keep-alive
Content-Type: application/json
Server: nginx/1.6.2
Transfer-Encoding: chunked
UPDATE 2:
ich festgestellt, dass die gleiche Konfiguration perfekt auf meinem Büro-Computer arbeitet, was bedeutet, dass es Ausgabe meines Computers zu Hause ist. Wie auch immer, es wäre sehr schön festzustellen, was genau falsch läuft.
Gibt es viel Unterschied in der System Konfi von zu Hause und Office-System? – tharif