Nginx websocket reverse proxy configuration

Hi, I am trying to configure nginx as a reverse proxy for websockets. I configure my server as follows:
server { listen 80; server_name www.mydomain.com; access_log off; #error_log off; location / { proxy_pass http://127.0.0.1:8765; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; proxy_set_header Host $http_host; proxy_buffering off; } } 

but I get an error from the client, for example,

Connection to WebSocket with 'ws: //www.application.com/ws' failed: error during WebSocket handshake: the value of the "Connection" header is not "updated"

I probably misconfigured the configuration, but I could not see it.

Client request headers follow

 GET ws://www.talkybee.com/ws HTTP/1.1 Pragma: no-cache Origin: http://www.talkybee.com Host: www.talkybee.com Sec-WebSocket-Key: Ol+O1IdaLEsHxxWRBt2oqg== User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36 Upgrade: websocket Sec-WebSocket-Extensions: x-webkit-deflate-frame Cache-Control: no-cache Connection: Upgrade Sec-WebSocket-Version: 13 

When I make a normal direct connection, my connection works. Here is the title of the work request.

 Cache-Control:no-cache Connection:Upgrade Host:www.talkybee.com:8765 Origin:http://www.talkybee.com:8765 Pragma:no-cache Sec-WebSocket-Extensions:x-webkit-deflate-frame Sec-WebSocket-Key:Y026b/84aUkMxVb0MaKE2A== Sec-WebSocket-Version:13 Upgrade:websocket User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36 
+2
source share
1 answer

This problem is related to the nginx version. Please check nginx -v to check your version. The following options are supported after version 1.4 .

  # WebSocket support (nginx 1.4) proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; 

If you are using ubuntu, you can install a newer version using the following steps:

First uninstall the old version ( https://askubuntu.com/questions/235347/what-is-the-best-way-to-uninstall-nginx ):

 sudo apt-get remove nginx sudo apt-get purge nginx sudo apt-get autoremove 

Then install the new version ( https://launchpad.net/~nginx/+archive/development ):

 sudo add-apt-repository ppa:nginx/development sudo apt-get update sudo apt-get install nginx 
+20
source

Source: https://habr.com/ru/post/1237583/


All Articles