我有一个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;
}
}