http - nginx y proxy de WebSockets
(1)
Problema 1: En cuanto a la conexión que se muere una vez por minuto, me di cuenta de que es una variable de tiempo de espera nginx. Puedo hacer que nuestra aplicación haga ping de vez en cuando o aumentar el tiempo de espera. No estoy seguro de si debería configurarlo como 0, decidí hacer ping una vez por minuto y establecer el tiempo de espera en 90 segundos. ( keepalive_timeout
)
Problema 2: Los problemas de conectividad surgieron cuando usé CloudFlare CDN. Desactivar la aceleración de CloudFlare solucionó el problema.
Alternativamente, podría crear un subdominio y configurarlo como "no acelerado" y usarlo para WS.
Estoy tratando de hacer proxy WebSocket + HTTP con nginx.
He leído esto: http://nginx.org/en/docs/http/websocket.html
Mi configuración se ve como:
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
gzip on;
map $http_upgrade $connection_upgrade {
default upgrade;
'''' close;
}
server {
listen 80;
server_name ourapp.com;
location / {
proxy_pass http://127.0.0.1:100;
proxy_http_version 1.1;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}
}
Tengo 2 problemas:
1) La conexión se cierra una vez por minuto.
2) Quiero ejecutar tanto HTTP como WS en el mismo puerto. La aplicación funciona bien localmente, pero si trato de poner HTTP y WS en el mismo puerto y configurar este proxy nginx, obtengo esto:
La conexión de WebSocket a ''ws: //ourapp.com/ws'' falló: Código de respuesta inesperado: 200
La carga de la aplicación (HTTP) parece funcionar bien, pero la conexión de WebSocket falla.