Comment configurer le proxy inverse 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.
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
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
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
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
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; }
解释一下参数
/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; }
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 websocketproxy_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; }
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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

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 !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

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.

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.

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

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 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? 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.

É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".

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.
