Websocket升级响应未通过Nginx到达客户端

时间:2017-04-27 22:25:40

标签: node.js nginx

我有一个IOS / swift客户端通过NGINX反向代理连接到NodeJS / ws websocket服务。所有与websocket相关的转发设置都在NGINX配置中完成,websocket服务能够从客户端的升级请求升级和设置websocket连接。

但是在客户端,没有收到原始http升级请求的响应。

当websocket在超时后终止连接时,客户端获得响应,这很奇怪。

NGINX反向代理正在VM上的容器中运行。

我在完全相同的问题上看到了另外一个问题,但没有找到任何答案。这是在容器中运行的代理问题吗?

" Nginx not passing websocket upgrade response back to client?"

这是我的nginx代理的片段。

server {
listen       443 ssl;
server_name  <hidden>;
ssl          on;
ssl_certificate     /etc/certs/<hidden>.pem;
ssl_certificate_key /etc/certs/<hidden>.pem;
ssl_protocols       SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers         HIGH:!aNULL:!MD5;

large_client_header_buffers 8 32k;

location ~^/(?<cluster>[^/]+)/websocket {
    proxy_pass https://<hidden>
    proxy_http_version 1.1;
    set $http_upgrade "websocket";
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header FromRP      <hidden>;
    proxy_set_header X-Real-IP   $remote_addr;
    proxy_set_header X-Real-Addr $remote_addr:$remote_port;
    proxy_set_header X-External-URL   $scheme://$host$request_uri ;
    proxy_read_timeout           360;
    access_log  /var/log/nginx/websocket.access.log upstreamlog;
    error_log  /var/log/nginx/websocket.error.log info;
    proxy_buffers 8 32k;
    proxy_buffer_size 64k;
}

}

0 个答案:

没有答案