Nginx websocket 502坏的网关

我试图使用nginx作为websocket nodejs服务器的代理,但我总是得到502坏的网关。

我的域名configuration:

upstream server { server 127.0.0.1:8090; } server { listen 8085; server_name server.cz server; ssl on; #ssl_certificate /etc/ssl/server/server.cz.pem; ssl_certificate /etc/ssl/server/server.cz.crt; ssl_certificate_key /etc/ssl/server/server.cz.key; access_log /var/log/nginx/server.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://server; proxy_redirect off; #WEBSOCKET proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } } 

我用curl来testing这个:

 curl -i -N -vv -H "Connection: Upgrade" -H "Upgrade: websocket" -H "Host: server.cz" -H "Origin: https://server.cz" -k https://127.0.0.1:8085 

这将导致与502坏的网关全部结果: http : //pastebin.com/bL1CYzjt

如果我直接尝试这个nodejs服务器,它工作正常。

Nginx日志:

 [error] 4083#0: *1 upstream prematurely closed connection while reading response header from upstream, client: 127.0.0.1, server: server.cz, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8090/", host: "server.cz" 

server.log中

 "GET / HTTP/1.1" 502 172 "-" "curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3"