Maison >Opération et maintenance >Nginx >Comment configurer Nginx pour WebSocket Proxying?

Comment configurer Nginx pour WebSocket Proxying?

Emily Anne Brown
Emily Anne Brownoriginal
2025-03-17 17:01:02978parcourir

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:

  1. Modifier le fichier de configuration Nginx:
    Ouvrez votre fichier de configuration Nginx (généralement situé sur /etc/nginx/nginx.conf ou à l'intérieur /etc/nginx/sites-available/ pour les configurations spécifiques au site).
  2. 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é.
  3. Tester et redémarrer Nginx:
    Après avoir apporté ces modifications, testez la configuration des erreurs de syntaxe avec nginx -t , puis rechargez ou redémarrez Nginx avec sudo systemctl reload nginx ou sudo systemctl restart nginx .

Quels sont les paramètres NGINX nécessaires pour les connexions WebSocket?

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.

Comment puis-je m'assurer que Nginx gère correctement les mises à niveau du protocole WebSocket?

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:

  1. Vérifiez la configuration:
    Vérifiez que vous avez inclus tous les paramètres nécessaires dans votre configuration NGINX, en particulier proxy_set_header Upgrade $http_upgrade et proxy_set_header Connection "upgrade" .
  2. Utilisez des outils de développeur de navigateur:
    Ouvrez votre application Web dans un navigateur et utilisez les outils de développeur du navigateur pour inspecter les demandes réseau. Recherchez les connexions WebSocket et assurez-vous qu'ils affichent une réponse de mise à niveau réussie (code d'état 101).
  3. Surveiller les journaux Nginx:
    Vérifiez les journaux d'accès et d'erreur NGINX pour vous assurer qu'il n'y a pas d'erreurs liées à WebSocket. Les journaux peuvent être trouvés dans /var/log/nginx/ . Une mise à niveau WebSocket réussie ne enregistrera pas une erreur.
  4. Tester avec les outils clients WebSocket:
    Utilisez des outils de ligne de commande comme wscat ou websocat pour lancer manuellement les connexions WebSocket et vérifier qu'elles se connectent avec succès via Nginx.
  5. Assurer la compatibilité du serveur backend:
    Assurez-vous que votre serveur backend (par exemple, Node.js, Java, etc.) est configuré pour gérer correctement les connexions WebSocket et les demandes de mise à niveau.

En suivant ces étapes, vous pouvez vous assurer que Nginx gère correctement les mises à niveau du protocole WebSocket.

Quelles étapes de dépannage dois-je suivre si WebSocket Proxying échoue dans Nginx?

Si vous rencontrez des problèmes avec WebSocket Proxying dans Nginx, suivez ces étapes de dépannage:

  1. Vérifiez la configuration de Nginx:
    Vérifiez que les paramètres de configuration de la proxyme WebSocket sont correctement ajoutés aux blocs http , server et location appropriés. Utilisez nginx -t pour tester la configuration des erreurs de syntaxe.
  2. Inspectez les journaux Nginx:
    Examinez les journaux d'accès et d'erreur Nginx ( /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.
  3. Vérifiez la configuration du serveur backend:
    Assurez-vous que votre serveur backend est correctement configuré pour gérer les connexions WebSocket et la mise à niveau. Vérifiez les journaux de votre serveur backend pour toutes les erreurs liées à WebSocket.
  4. Utilisez des outils de développeur de navigateur:
    Utilisez des outils de développeur de navigateur pour inspecter les demandes réseau et les connexions WebSocket. Vérifiez les erreurs pendant la phase de connexion ou pendant la transmission des données.
  5. Tester avec les outils clients WebSocket:
    Utilisez des outils comme 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.
  6. Vérifiez les problèmes de pare-feu ou de proxy:
    Assurez-vous qu'il n'y a pas de pare-feu ou de proxy bloquant les connexions WebSocket entre Nginx et votre serveur backend ou entre le client et Nginx.
  7. Tirer les horaires de la connexion:
    Les connexions WebSocket peuvent échouer si elles prennent trop de temps à établir. Réglez proxy_read_timeout de Nginx et proxy_send_timeout si nécessaire.
  8. Vérifiez la version du protocole WebSocket:
    Assurez-vous que le client et le serveur utilisent une version de protocole WebSocket prise en charge. Les décalages peuvent entraîner des défaillances de connexion.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn