Maison >Opération et maintenance >Nginx >Comment configurer Nginx pour WebSocket Proxying?
Pour configurer Nginx pour WebSocket Proxying, vous devez vous assurer que Nginx peut gérer correctement le protocole WebSocket et ses demandes de mise à niveau. Voici un guide étape par étape sur la façon de configurer cela:
/etc/nginx/nginx.conf
ou à l'intérieur /etc/nginx/sites-available/
pour les configurations spécifiques au site). Ajouter des paramètres de proxy WebSocket:
Dans le bloc http
ou server
où vous souhaitez activer la prise en charge de WebSocket, ajoutez l'extrait de configuration suivant:
<code class="nginx">http { ... server { listen 80; server_name example.com; location / { proxy_pass http://your_backend_server; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } } }</code>
proxy_http_version 1.1
garantit que Nginx utilise HTTP / 1.1, qui est requis pour les connexions WebSocket.proxy_set_header Upgrade $http_upgrade
et proxy_set_header Connection "upgrade"
sont cruciaux pour gérer la demande de mise à niveau WebSocket.proxy_cache_bypass $http_upgrade
garantit que les connexions WebSocket contournent la mise en cache, ce qui est généralement approprié.nginx -t
, puis rechargez ou redémarrez Nginx avec sudo systemctl reload nginx
ou sudo systemctl restart nginx
. Pour s'assurer que Nginx gère correctement les connexions WebSocket, les paramètres suivants sont nécessaires dans le bloc location
dans votre configuration Nginx:
proxy_pass
: spécifie le serveur backend auquel les demandes WebSocket seront proxées.proxy_http_version 1.1
: définit la version du protocole HTTP à 1.1, ce qui est requis pour les connexions WebSocket.proxy_set_header Upgrade $http_upgrade
: transmet la valeur de l'en-tête de Upgrade
du client vers le serveur backend.proxy_set_header Connection "upgrade"
: Définit l'en-tête de Connection
sur "Mise à niveau", signalant la demande de mise à niveau WebSocket.proxy_set_header Host $host
: passe l'en-tête hôte du client vers le serveur backend.proxy_cache_bypass $http_upgrade
: garantit que les connexions WebSocket contournent la mise en cache, car les connexions WebSocket ne doivent pas être mises en cache.Ces paramètres fonctionnent ensemble pour garantir que les connexions WebSocket sont correctement gérées et transmises vers votre serveur backend.
Pour vous assurer que Nginx gère correctement les mises à niveau du protocole WebSocket, vous devez implémenter les configurations nécessaires comme décrit dans les sections précédentes. Voici des conseils supplémentaires pour vérifier que les mises à niveau sont gérées correctement:
proxy_set_header Upgrade $http_upgrade
et proxy_set_header Connection "upgrade"
./var/log/nginx/
. Une mise à niveau WebSocket réussie ne enregistrera pas une erreur.wscat
ou websocat
pour lancer manuellement les connexions WebSocket et vérifier qu'elles se connectent avec succès via Nginx.En suivant ces étapes, vous pouvez vous assurer que Nginx gère correctement les mises à niveau du protocole WebSocket.
Si vous rencontrez des problèmes avec WebSocket Proxying dans Nginx, suivez ces étapes de dépannage:
http
, server
et location
appropriés. Utilisez nginx -t
pour tester la configuration des erreurs de syntaxe./var/log/nginx/
) pour toutes les erreurs ou problèmes liés à WebSocket. Recherchez les entrées liées aux connexions WebSocket et les demandes de mise à niveau.wscat
ou websocat
pour tester les connexions WebSocket directement à partir de la ligne de commande. Cela peut aider à isoler si le problème est avec Nginx ou le serveur backend.proxy_read_timeout
de Nginx et proxy_send_timeout
si nécessaire.En passant systématiquement ces étapes de dépannage, vous devriez être en mesure d'identifier et de résoudre les problèmes avec WebSocket Proxying dans Nginx.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!