Position actuelle: Accueil> Derniers articles> Explication détaillée de la configuration de Nginx Proxy WebSocket: support de communication en temps réel

Explication détaillée de la configuration de Nginx Proxy WebSocket: support de communication en temps réel

M66 2025-07-09

Quel est le protocole WebSocket

WebSocket est un protocole de communication complet basé sur TCP qui permet aux connexions persistantes entre les clients et les serveurs de réaliser une transmission bidirectionnelle de données en temps réel. Par rapport à un sondage HTTP traditionnel, WebSocket a une efficacité plus élevée et une latence plus faible dans des scénarios tels que la communication instantanée et la poussée en temps réel.

Pourquoi utiliser nginx pour proxy WebSocket

Dans le déploiement réel, nous devons souvent utiliser Nginx comme serveur proxy frontal pour gérer l'équilibrage de charge, le contrôle d'accès sécurisé, le transfert de chemin et d'autres fonctions. Afin de prendre en charge le protocole WebSocket, une configuration supplémentaire de Nginx est requise pour garantir que la connexion peut être livrée au service backend de manière stable et en continu.

Installer nginx

Tout d'abord, assurez-vous que Nginx est installé sur votre serveur. Il peut être installé via l'outil de gestion des packages:

sudo apt install nginx # system debian / ubuntu sudo yum install nginx # centos système

Une fois l'installation terminée, vous pouvez utiliser nginx -v pour afficher la version pour vous assurer que l'installation est réussie.

Configurer nginx pour prendre en charge WebSocket

Ensuite, vous devez modifier le fichier de configuration Nginx, généralement le fichier de configuration dans /etc/nginx/nginx.conf ou un site compatible .

Configurer la carte et en amont

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 configurer un mappage pour l'en-tête de mise à niveau de la connexion WebSocket et de spécifier l'adresse de l'application Backend.

Configurer l'emplacement dans le bloc serveur

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 transfère les demandes d'accès au chemin d'accès / WebSocket vers le backend et comporte les informations d'en-tête nécessaires pour permettre la fin du processus de poignée de main WebSocket.

Redémarrez Nginx pour rendre la configuration prendre effet

Une fois la configuration terminée, exécutez la commande suivante pour redémarrer le service Nginx:

service sudo nginx redémarrer

Si la configuration est correcte, Nginx prendra en charge le transfert de connexions WebSocket.

Tester la connexion WebSocket

Vous pouvez tester si le WebSocket est connecté avec succès via un navigateur ou un autre outil client. Voici un exemple JavaScript 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");
};

Incorporez le code ci-dessus dans HTML, et après l'avoir ouvert dans le navigateur, observez simplement si la console peut afficher l'état de la connexion.

Résumer

En configurant Nginx Proxy WebSocket, nous pouvons obtenir une prise en charge de communication en temps réel stable à haute performance. Nginx lui-même ne gère pas la logique WebSocket et n'est responsable que du transfert des connexions et des en-têtes liés au protocole de traitement. Le backend doit encore avoir des capacités de service WebSocket. Lors du déploiement des applications Web modernes, la combinaison des fonctions proxy de Nginx et des services WebSocket back-end est un choix idéal pour l'interaction de données en temps réel.