WebSocket est un protocole de communication complet basé sur TCP qui permet une communication bidirectionnelle persistante en temps réel entre les serveurs et les clients. Cette fonctionnalité le rend très adapté au chat en direct, à la poussée de données en temps réel et à d'autres scénarios. Dans le déploiement réel, Nginx est généralement tenu d'utiliser comme serveur proxy inversé pour transférer et gérer les demandes de connexion WebSocket.
Tout d'abord, assurez-vous que Nginx est correctement installé dans votre environnement de serveur. S'il n'a pas été installé, le déploiement peut être terminé en fonction du système d'exploitation en exécutant la commande d'installation correspondante.
Pour faire en sorte que Nginx prenne en charge WebSocket, les fichiers de configuration doivent être ajustés. Voici un exemple de configuration ajouté dans le module HTTP :
map $ http_upgrade $ connection_upgrade { mise à niveau par défaut; '' fermer; } Backend en amont { serveur 127.0.0.1:8080; }
Le but de cette configuration est de cartographier le champ de mise à niveau dans l'en-tête de demande client vers une variable personnalisée $ connection_upgrade pour une utilisation proxy ultérieure. Dans le même temps, un serveur en amont nommé backend est défini, pointant vers le port local 8080.
Ajoutez la configuration d'emplacement suivante au bloc serveur pour gérer les demandes WebSocket pour les chemins de correspondance:
Emplacement / WebSocket { proxy_pass http: // backend; proxy_http_version 1.1; Proxy_set_header mise à niveau $ http_upgrade; proxy_set_header connection $ connection_upgrade; }
Cette configuration est utilisée pour spécifier le chemin proxy, le transfert d'adresse et définir les champs d'en-tête de demande requis pour garantir que les connexions WebSocket peuvent être proxyées avec succès.
Après avoir modifié le fichier de configuration, enregistrez et fermez le fichier, puis redémarrez le service Nginx sur la ligne de commande pour que la configuration prenne effet:
service sudo nginx redémarrer
Vous pouvez utiliser l'outil client WebSocket ou créer une page Web simple pour tester si la connexion WebSocket est valide. Voici un exemple de base:
var ws = new WebSocket ("ws: // your_domain / Websocket"); ws.onopen = function () { console.log ("connecté à WebSocket"); }; ws.onMessage = fonction (événement) { console.log ("Message reçu:" + event.data); }; ws.Onclose = function () { console.log ("déconnecté de WebSocket"); };
Enregistrez le code ci-dessus en tant que fichier HTML et ouvrez-le dans votre navigateur. Si vous voyez une invite pour une connexion réussie dans l'outil de développement, la configuration est réussie.
En configurant la fonction proxy de Nginx, nous pouvons fournir une prise en charge du protocole WebSocket pour les applications backend. Cette méthode améliore non seulement l'efficacité de la communication, mais rend également l'ensemble du système plus stable et évolutif à l'aide des caractéristiques élevées de performances et de sécurité de Nginx. Il convient de noter que Nginx lui-même ne gère pas le protocole WebSocket, il agit uniquement comme un proxy intermédiaire, transmet la connexion à l'application backend pour le traitement. Si vous devez implémenter une logique de service WebSocket plus complexe, il est recommandé d'utiliser un serveur WebSocket backend dédié pour le traitement.