如何解决Nginx的499,当它没有返回到客户端的Web套接字握手?

在一个Kubernetes集群中,我有一个Nginx服务器,就像一个反向代理/ TLS终止解决scheme一样,代理通过一个由Web Sockets(SockJS / Stomp)支持的function的后端Tomcat应用程序的请求。 不幸的是,Web Sockets握手从未成功完成。

在客户端,在我的浏览器中,我可以在控制台中看到以下消息: Opening Web Socket... websockets-0.1.min.js:116 Whoops! Lost connection to https://myhost/stomp Opening Web Socket... websockets-0.1.min.js:116 Whoops! Lost connection to https://myhost/stomp

随后是HTTP 504 Gateway Timeout

 websockets-0.1.min.js:72 WebSocket connection to 'wss://myhost/stomp/673/ugvpxc1lwmfjnung/websocket' failed: Error during WebSocket handshake: Unexpected response code: 504 

在tomcat端,我在访问日志中有以下条目:

 0:0:0:0:0:0:0:1,2017-06-01 16:53:36.915 +0000,4,GET,HTTP/1.1,"/stomp/673/ugvpxc1lwmfjnung/websocket",101, -,O,-,blablablabla,-,-,"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36",-,,-,-,-,-,-,- 

而在nginx的访问日志中,我有相应的条目:

 10.2.89.0 - - [01/Jun/2017:16:54:41 +0000] "GET /stomp/673/ugvpxc1lwmfjnung/websocket HTTP/1.1" 499 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36" "24.5.136.13" 

现在,根据我所研究的内容,当客户端closures连接时会显示499代码,但我无法弄清楚为什么响应返回客户端需要这么长时间。 根据这两个条目的时间戳,这两个事件间隔约1分钟。 这里发生了什么?

这里是我的nginx.conf的一个片段,在这一点上的任何帮助深表谢意:

 server { listen 9965 default_server ssl; listen [::]:9965 default_server ssl; resolver 127.0.0.1; server_name _; ssl_certificate /etc/ssl/certs/certificate.pem; ssl_certificate_key /etc/ssl/certs/key.pem; ssl_dhparam /etc/ssl/certs/dhparam.pem; client_max_body_size 2000M; location / { proxy_read_timeout 900; proxy_pass_header Server; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Upgrade 'websocket'; proxy_set_header Connection "upgrade"; proxy_pass http://localhost:15010; } 

任何想法如何进一步解决这个问题?

固定。 不得不用ALBreplace经典的AWS ELB。