WebSocket est un protocole de communication bidirectionnel basé sur TCP qui prend en charge les connexions persistantes et est largement utilisé dans la communication en temps réel, le chat en ligne, la poussée de diffusion en direct et d'autres scénarios. De manière générale, le flux de données doit être transféré entre le frontal et le back-end via un serveur proxy, et Nginx, en tant que serveur proxy inverse haute performance, peut terminer la tâche de transfert de demande de bien WebSocket.
Avant de commencer la configuration, vous devez vous assurer que Nginx est installé dans le système. S'il n'a pas été installé, il peut être installé via le gestionnaire de package ou le code source en fonction du système d'exploitation utilisé.
Ouvrez le fichier de configuration principale de Nginx, généralement situé dans /etc/nginx/nginx.conf , et ajoutez le contenu suivant au bloc HTTP :
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream backend {
server 127.0.0.1:8080;
}
La directive MAP est utilisée pour traiter les informations de l'en-tête de mise à niveau pour s'adapter aux exigences de connexion de WebSocket; La configuration en amont définit l'adresse du serveur d'applications backend.
Ensuite, ajoutez la configuration pour gérer les demandes WebSocket dans le bloc serveur :
location /websocket {
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
Le but de ce bloc de configuration est de transmettre les demandes du chemin / WebSocket vers le service backend, tout en garantissant que les champs WebSocket nécessaires sont conservés dans l'en-tête de demande HTTP.
Une fois la configuration de modification terminée, le service NGINX doit être rechargé ou redémarré. Exécutez simplement la commande suivante:
<span class="fun">service sudo nginx redémarrer</span>
Assurez-vous qu'il n'y a pas d'erreurs de syntaxe ou d'occupation du port avant que la configuration ne puisse prendre effet avec succès.
Après avoir terminé la configuration côté serveur, vous pouvez utiliser un exemple frontal simple pour tester si la connexion WebSocket est établie avec succès. Voici un exemple de code JavaScript:
var ws = new WebSocket("ws://your_domain/websocket");
ws.onopen = function() {
console.log("Connected to WebSocket");
};
ws.onmessage = function(event) {
console.log("Received message: " + event.data);
};
ws.onclose = function() {
console.log("Disconnected from WebSocket");
};
Entrez le code ci-dessus dans le fichier HTML. Après avoir ouvert la page dans le navigateur, si la console sortira "connectée à WebSocket", cela signifie que la connexion est réussie.
Grâce aux étapes de configuration de cet article, le serveur proxy NGINX peut prendre en charge le protocole WebSocket, atteignant ainsi des capacités de communication bidirectionnelles efficaces. Cette architecture est particulièrement adaptée aux scénarios qui nécessitent une interaction en temps réel, tels que les jeux en ligne, les tableaux de bord de données en temps réel, les systèmes de chat, etc. Il convient de noter que Nginx n'existe que comme proxy intermédiaire, et le véritable service WebSocket est toujours traité par l'application backend.