Tengo un cliente IOS/swift que se conecta a un servicio websocket NodeJS/ws a través de un proxy inverso NGINX. Toda la configuración de reenvío relacionada con websocket se realiza en la configuración de NGINX y el servicio de websocket puede actualizar y configurar la conexión de websocket desde la solicitud de actualización del cliente.
Pero en el extremo del cliente, no se recibe ninguna respuesta para la solicitud de actualización de http original.
Cuando el websocket finaliza la conexión después de un tiempo de espera, el cliente obtiene la Respuesta, lo cual es extraño.
El proxy inverso NGINX se ejecuta en un contenedor en una máquina virtual.
He visto otra pregunta sobre exactamente el mismo problema, pero no encontré ninguna respuesta. ¿Es este un problema con el proxy que se ejecuta en un contenedor?
"¿ Nginx no devuelve la respuesta de actualización de websocket al cliente? "
Aquí está el fragmento de mi proxy 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; }}