Nginx TCP (WebSockets) Timeout / Keepalive Config
Je suis en utilisant nginx version: nginx/1.0.12
Mon nginx.conf ressemble à ceci:
#user nobody;
worker_processes 1;
error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
tcp {
upstream websockets {
## Play! WS location
server 127.0.0.1:9000;
check interval=3000 rise=2 fall=5 timeout=1000;
}
server {
listen 80;
listen 8000;
server_name socket.domain.com;
tcp_nodelay on;
proxy_pass websockets;
proxy_send_timeout 300;
}
# virtual hosting
#include /usr/local/nginx/vhosts/*;
}
Ma demande semble tomber des websocket connnections tous les 75 sec (ou presque) je pense que c'est à cause de Nginx par défaut de la directive keepalive config. Comment augmenter le délai d'attente?
Vérifier wiki.
Je l'avais essayé plus tôt: j'ai ajouté keepalive 32 sur la ligne 20 (sous serveur 127.0.0.1:9000) et je reçois nginx: [emerg] directive inconnue "keepalive" dans /usr/local/nginx/conf/nginx.conf:20
si je supprime l'amont de la directive (je ne suis pas d'équilibrage de la charge), et ajouter un proxy passe dans la balise de serveur, alors que dois-je faire?
Avez-vous ajouté
J'ai essayé de suivre vos notes, mais ils semblent être pour http et pas pour le protocole tcp. Mise à jour de nginx.conf (pastebin.com/NP9BhFrt) donnant erreurs similaires.
Je l'avais essayé plus tôt: j'ai ajouté keepalive 32 sur la ligne 20 (sous serveur 127.0.0.1:9000) et je reçois nginx: [emerg] directive inconnue "keepalive" dans /usr/local/nginx/conf/nginx.conf:20
si je supprime l'amont de la directive (je ne suis pas d'équilibrage de la charge), et ajouter un proxy passe dans la balise de serveur, alors que dois-je faire?
Avez-vous ajouté
proxy_http_version 1.1;
et proxy_set_header Connection "";
? Lire en lien avec soin.J'ai essayé de suivre vos notes, mais ils semblent être pour http et pas pour le protocole tcp. Mise à jour de nginx.conf (pastebin.com/NP9BhFrt) donnant erreurs similaires.
OriginalL'auteur Sameer Segal | 2012-05-11
Vous devez vous connecter pour publier un commentaire.
J'ai essayé le
websocket_*_timeout
qui ne sont pas pris en charge sur nginx 1.7.1 (elle donne: directive inconnue).Cependant de définir un
proxy_*_timeout
travaux:7d
moyen de 7 jours, voir officiel de référence pour la configuration de nginxEn outre, vous probablement n'avez qu'à définir la
proxy_read_timeout 7d;
que celui habituellement affaire, à moins que le serveur derrière le proxy est très lent.Le
websocket_*_timeout
nécessite nginx être compilé avec lenginx_tcp_proxy_module
module de github.com/yaoweibin/nginx_tcp_proxy_modulevous sauver ma journée merci
OriginalL'auteur Wernight
ces brillant gars avait le même problème et résolu ....
NGINX pour proxy inverse websockets ET activer le protocole SSL (wss://)?
aussi, ici, à l'origine, repo de ce module est plus instructions du module d'auteur.
https://github.com/yaoweibin/nginx_tcp_proxy_module/issues/28
elle montants essentiellement à l'ajout de websocket_*_timeout instructions de la directive serveur:
OriginalL'auteur sirvon