簡體   English   中英

在node.js服務器上使用nginx時,“websocket連接無效”

[英]“websocket connection invalid” when using nginx on node.js server

我正在使用Express.js創建一個服務器,我可以使用Web套接字連接到該服務器。

即使它最終似乎有效(即連接並將事件傳遞給客戶端),我最初在Chrome的控制台中出錯:

意外的響應代碼:502

在后端,socket.io只記錄warn - websocket connection invalid

但是,nginx記錄了這個:

2012/02/12 23:30:03 [錯誤] 25061#0:* 81上游過早關閉連接,同時從上游讀取響應頭,客戶端:71.122.117.15,服務器:www.example.com,請求:“GET / socket .io / 1 / websocket / 1378920683898138448 HTTP / 1.1“,上游:” http://127.0.0.1:8090/socket.io/1/websocket/1378920683898138448 “,主持人:”www.example.com“

注意:我有nginx dev運行: nginx version: nginx/1.1.14所以它應該支持HTTP / 1.1。

另請注意,如果我只使用沒有nginx的node.js服務器,它可以正常工作而不會發出任何警告。

最后,這是我的nginx配置文件:

server {
        listen 0.0.0.0:80;
        server_name www.example.com;
        access_log /var/log/nginx/example.com.log;

        location / {
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header Host $http_host;
          proxy_set_header X-NginX-Proxy true;

          proxy_pass http://node;
          proxy_redirect off;
        }
}

upstream node {
        server 127.0.0.1:8090;
}

任何幫助將不勝感激。 我嘗試了在這個問題中提出的解決方案,但這也沒有用。

nginx只在不穩定的1.1分支中有某種Web Socket支持。 請參閱Socket.IO wiki

Afaik目前只有少數穩定的基於Node.js的http代理正確支持Web套接字。

檢查node-http-proxy(我們使用這個):

https://github.com/nodejitsu/node-http-proxy

和彈性:

https://github.com/substack/bouncy

或者您可以使用純TCP代理,例如HAproxy

更新!

nginx(1.3.13> =)支持開箱即用的websockets!

http://nginx.org/en/docs/http/websocket.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM