Maison Opération et maintenance Nginx Comment configurer le proxy inverse nginx webSocket

Comment configurer le proxy inverse nginx webSocket

May 21, 2023 pm 12:13 PM
nginx websocket

Étant donné que le protocole websocket est mis à niveau sur la base du protocole http (voir l'image ci-dessous), vous pouvez utiliser le websocket de proxy inverse nginx.

Comment configurer le proxy inverse nginx webSocket

websocket

Comme vous pouvez le voir sur cette image, la connexion websocket est établie en fonction de le protocole http sur la base de.

get /chat http/1.1
host: server.example.com
upgrade: websocket
connection: upgrade
sec-websocket-key: x3jjhmbdl1ezlkh9gbhxdw==
sec-websocket-protocol: chat, superchat
sec-websocket-version: 13
origin: http://example.com
Copier après la connexion

Les enfants qui connaissent http ont peut-être remarqué qu'il y a juste quelques éléments supplémentaires dans cette demande de poignée de main, similaires au protocole http.

upgrade: websocket
connection: upgrade
这个就是websocket的核心了,告诉apache、nginx等服务器:我发起的是websocket协议。
sec-websocket-key: x3jjhmbdl1ezlkh9gbhxdw==
sec-websocket-protocol: chat, superchat
sec-websocket-version: 13
Copier après la connexion

Tout d'abord, sec-websocket-key est une valeur d'encodage base64, générée aléatoirement par le navigateur. Elle indique au serveur : Peat, ne me trompez pas, je veux vérifier si vous êtes vraiment un assistant Websocket. .

Enfin, sec-websocket-version indique au serveur le brouillon du websocket (version du protocole) utilisé. Au début, le protocole websocket était encore au stade du brouillon, et il y avait toutes sortes de protocoles étranges, et il y en avait beaucoup. C'est étrange qu'il y ait des choses différentes. Firefox et Chrome utilisent des versions différentes. Au début, il y avait trop de protocoles Websocket, ce qui était un gros problème. . Mais c'est bon maintenant, c'est réglé. C'est une chose que tout le monde utilise

Ensuite, le serveur renverra la chose suivante, indiquant que la demande a été acceptée et que le websocket a été établi avec succès !

http/1.1 101 switching protocols
upgrade: websocket
connection: upgrade
sec-websocket-accept: hsmrc0smlyukagmm5oppg2hagwk=
sec-websocket-protocol: chat
Copier après la connexion

C'est le dernier domaine dont http est responsable. Il indique au client que j'ai changé de protocole avec succès ~

upgrade: websocket
connection: upgrade
Copier après la connexion

Il est toujours corrigé et indique au client que la mise à niveau à venir est le protocole websocket. À ce stade, http a terminé tout son travail et la prochaine étape consiste à procéder entièrement conformément au protocole websocket.

Une fois que vous avez compris le principe du protocole, vous pouvez passer à l'étape suivante

Tout d'abord, nginx configure d'abord le certificat https

Le certificat du serveur a été configuré par le patron, je l'ai donc utilisé directement. Vérifiez-le vous-même si nécessaire. 0.0

Ajoutez la configuration suivante dans le nœud service du fichier de configuration nginxservice 节点中添加如下配置

location /wss
    {
         proxy_pass http://127.0.0.1:8888;
         proxy_http_version 1.1;
         proxy_set_header upgrade $http_upgrade;
         proxy_set_header connection "upgrade";
        proxy_set_header x-real-ip $remote_addr;
     }
Copier après la connexion

解释一下参数

/wss 这个是随便起的,告诉nginx要代理的url,现在我的设置为 wss ,当我访问的我的服务器 https://abc.com/wss 时,nginx会把我的请求映射到本机的8888端口。

proxy_pass 要代理到的url,我的代理到本机的8888端口。

proxy_http_version 代理时使用的 http版本。

重点来了:

代理websocket的关键参数

proxy_set_header upgrade 把代理时http请求头的 upgrade 设置为原来http请求的请求头,wss协议的请求头为 websocket
proxy_set_header connection 因为代理的wss协议,所以http请求头的 connection 设置为 upgrade

proxy_set_header x-real-ip 给代理设置原http请求的ip,填写 $remote_addr 即可

至于websocket协议的response的参数,在反向代理的时候不用管。

到这里,nginx反向代理websocket的配置就完成了,重启nginx,用websocket连接试试,在原来wss地址的地方填写 wss://abc.com/wss

location ~ .php$ {
   root html;
   fastcgi_pass 127.0.0.1:9000;
   fastcgi_index index.php;
   fastcgi_param script_filename $document_root$fastcgi_script_name;
   include fastcgi_params;
}
Copier après la connexion

Expliquez les paramètres

/wss Ceci est juste au hasard Oui, indiquez à nginx l'URL à utiliser par proxy. Maintenant, mon paramètre est wss Lorsque j'accède à mon serveur https://abc.com/wss, nginx mappera. ma demande de port 8888 de cette machine.

proxy_pass L'URL vers laquelle vous souhaitez effectuer un proxy, mon proxy est vers le port 8888 de cette machine.

proxy_http_version La version http utilisée lors du proxy.

Voici le point clé :

Paramètres clés du proxy websocket

proxy_set_header Upgrade Définissez la upgrade de l'en-tête de requête http pendant le proxy sur l'en-tête de requête de la requête http d'origine. L'en-tête de requête du protocole wss est websocket
proxy_set_header connection En raison du protocole proxy wss, l'en-tête de requête http connection< /code> est défini sur <code >upgrade
🎜🎜proxy_set_header x-real-ip Définissez l'adresse IP de la requête http d'origine sur le proxy et remplissez $remote_addr🎜🎜Comme pour websocket Les paramètres de réponse du protocole n'ont pas besoin d'être contrôlés lors du proxy inverse. 🎜🎜À ce stade, la configuration du websocket du proxy inverse nginx est terminée. Redémarrez nginx, essayez de vous connecter avec websocket et remplissez wss://abc.com/wss à la place du wss d'origine. adresse. Si le websocket est connecté avec succès, cela signifie que le websocket du proxy inverse nginx a réussi. 🎜🎜🎜Résumé🎜🎜🎜La configuration actuelle concerne uniquement la configuration lors du proxy inverse sur la machine locale. Si vous souhaitez effectuer un proxy inverse vers d'autres hôtes, il peut y avoir des problèmes entre domaines lors du proxy. Proxy inverse nginx. 🎜🎜🎜Réflexion🎜🎜🎜Vous pouvez voir ce paragraphe dans le fichier de configuration nginx🎜
location /tomcat
    {
         proxy_pass http://127.0.0.1:8080;
         proxy_http_version 1.1;
        proxy_set_header x-real-ip $remote_addr;
     }
Copier après la connexion
🎜Il s'agit du fichier de configuration php dans nginx, je pense qu'il semble si familier. Cette liste de configuration est tellement similaire au proxy inverse websocket en ce moment. . J'ai découvert en recherchant sur Internet que lorsque nginx gère les requêtes de type PHP, il envoie la requête au processus de gestion fastcgi. Le processus de gestion fascgi sélectionne le résultat du traitement du sous-processus cgi et le renvoie à nginx, et php-fpm est un PHP. Le gestionnaire fastcgi. nginx lui-même ne peut pas gérer PHP. Lorsqu'une requête est reçue, s'il s'agit d'une requête PHP, elle est envoyée à l'interpréteur PHP pour traitement et le résultat est renvoyé au client. Par conséquent, lorsque nginx gère les requêtes de type PHP, il est essentiellement implémenté via la fonction de proxy inverse. 🎜🎜Nous pouvons élargir notre réflexion et utiliser le proxy inverse nginx pour réaliser plus de fonctions, telles que le proxy de Tomcat🎜rrreee

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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment configurer le nom de domaine du serveur cloud dans nginx Comment configurer le nom de domaine du serveur cloud dans nginx Apr 14, 2025 pm 12:18 PM

Comment configurer un nom de domaine NGINX sur un serveur cloud: Créez un enregistrement A pointant vers l'adresse IP publique du serveur cloud. Ajoutez des blocs d'hôtes virtuels dans le fichier de configuration Nginx, en spécifiant le port d'écoute, le nom de domaine et le répertoire racine du site Web. Redémarrez Nginx pour appliquer les modifications. Accéder à la configuration du test de nom de domaine. Autres notes: Installez le certificat SSL pour activer HTTPS, assurez-vous que le pare-feu autorise le trafic Port 80 et attendez que la résolution DNS prenne effet.

Comment vérifier la version nginx Comment vérifier la version nginx Apr 14, 2025 am 11:57 AM

Les méthodes qui peuvent interroger la version Nginx sont: utilisez la commande nginx -v; Afficher la directive de version dans le fichier nginx.conf; Ouvrez la page d'erreur Nginx et affichez le titre de la page.

Comment démarrer le serveur Nginx Comment démarrer le serveur Nginx Apr 14, 2025 pm 12:27 PM

Le démarrage d'un serveur Nginx nécessite différentes étapes en fonction des différents systèmes d'exploitation: Système Linux / Unix: Installez le package NGINX (par exemple, en utilisant Apt-Get ou Yum). Utilisez SystemCTL pour démarrer un service NGINX (par exemple, sudo systemctl start nginx). Système Windows: téléchargez et installez les fichiers binaires Windows. Démarrer Nginx à l'aide de l'exécutable Nginx.exe (par exemple, nginx.exe -c conf \ nginx.conf). Peu importe le système d'exploitation que vous utilisez, vous pouvez accéder au serveur IP

Comment vérifier le nom du conteneur Docker Comment vérifier le nom du conteneur Docker Apr 15, 2025 pm 12:21 PM

Vous pouvez interroger le nom du conteneur Docker en suivant les étapes: répertorier tous les conteneurs (Docker PS). Filtrez la liste des conteneurs (à l'aide de la commande grep). Obtient le nom du conteneur (situé dans la colonne "Noms").

Comment vérifier si Nginx est démarré Comment vérifier si Nginx est démarré Apr 14, 2025 pm 01:03 PM

Comment confirmer si Nginx est démarré: 1. Utilisez la ligne de commande: SystemCTl Status Nginx (Linux / Unix), netStat -ano | Findstr 80 (Windows); 2. Vérifiez si le port 80 est ouvert; 3. Vérifiez le message de démarrage NGINX dans le journal système; 4. Utilisez des outils tiers, tels que Nagios, Zabbix et Icinga.

Comment configurer Nginx dans Windows Comment configurer Nginx dans Windows Apr 14, 2025 pm 12:57 PM

Comment configurer Nginx dans Windows? Installez Nginx et créez une configuration d'hôte virtuelle. Modifiez le fichier de configuration principale et incluez la configuration de l'hôte virtuel. Démarrer ou recharger nginx. Testez la configuration et affichez le site Web. Activer sélectivement SSL et configurer les certificats SSL. Définissez sélectivement le pare-feu pour permettre le trafic Port 80 et 443.

Comment démarrer un conteneur par Docker Comment démarrer un conteneur par Docker Apr 15, 2025 pm 12:27 PM

Étapes de démarrage du conteneur Docker: Tirez l'image du conteneur: Exécutez "Docker Pull [Mirror Name]". Créer un conteneur: utilisez "Docker Create [Options] [Mirror Name] [Commandes et paramètres]". Démarrez le conteneur: exécutez "docker start [nom de conteneur ou id]". Vérifiez l'état du conteneur: vérifiez que le conteneur s'exécute avec "Docker PS".

Comment exécuter nginx apache Comment exécuter nginx apache Apr 14, 2025 pm 12:33 PM

Pour faire en sorte que Nginx exécute Apache, vous devez: 1. Installez Nginx et Apache; 2. Configurer l'agent Nginx; 3. Démarrer Nginx et Apache; 4. Testez la configuration pour vous assurer que vous pouvez voir le contenu Apache après avoir accédé au nom de domaine. De plus, vous devez faire attention à d'autres questions telles que la correspondance du numéro de port, la configuration de l'hôte virtuel et les paramètres SSL / TLS.

See all articles