ngnix - nginx websocket configuración del proxy inverso
ngnix socket io (1)
Hola, estoy tratando de configurar nginx como proxy inverso para websockets. Configuro mi servidor de la siguiente manera:
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;
}
}
pero recibo un error del cliente como siguiente
No se pudo establecer la conexión WebSocket a ''ws: //www.application.com/ws'': error durante el protocolo de enlace WebSocket: el valor del encabezado ''Conexión'' no es ''Actualizar''
Probablemente estoy haciendo una configuración incorrecta, pero no pude verla.
Solicitar encabezados para el cliente está siguiendo
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
Cuando hago una conexión directa normal, mi conexión simplemente funciona. Aquí está el encabezado de solicitud de trabajo.
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
Este problema está relacionado con la versión de nginx. Verifique nginx -v, para verificar su versión. Los siguientes parámetros son compatibles después de la versión 1.4 .
# WebSocket support (nginx 1.4)
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
Si está utilizando ubuntu, puede instalar una versión más nueva con estos pasos:
Primero elimine la versión anterior ( 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
Luego, instale una nueva versión ( https://launchpad.net/~nginx/+archive/development ):
sudo add-apt-repository ppa:nginx/development
sudo apt-get update
sudo apt-get install nginx