Maison > Article > Opération et maintenance > Configuration WebSocket du proxy inverse Nginx pour obtenir une communication instantanée
Configuration WebSocket du proxy inverse Nginx pour obtenir une communication instantanée
WebSocket est un protocole de communication basé sur le protocole TCP. Il établit une connexion bidirectionnelle à long terme entre le navigateur et le serveur, réalisant la fonction de communication en temps réel. En tant que serveur Web hautes performances, Nginx peut également prendre en charge WebSocket via un proxy inverse et obtenir un meilleur équilibrage de charge et un traitement à haute concurrence.
Tout d'abord, pour configurer le proxy inverse dans Nginx, vous devez ajouter une configuration location
dans le fichier nginx.conf
. Supposons que le serveur WebSocket s'exécute sur le port local 8000 et que nous le renvoyons au port 3000 du serveur Nginx. La configuration spécifique est la suivante : nginx.conf
文件中添加一段location
的配置。假设WebSocket服务器运行在本地的8000端口上,我们将其反向代理到Nginx服务器的3000端口上,具体配置如下:
server { listen 3000; server_name your.server.name; location / { proxy_pass http://localhost:8000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; } }
在上述配置中,proxy_pass
指令指定了要反向代理的WebSocket服务器的地址和端口。proxy_http_version
指定了反向代理使用的HTTP版本,这里设置为1.1。proxy_set_header Upgrade
和proxy_set_header Connection
指令告诉Nginx在转发WebSocket请求时不要修改Upgrade
和Connection
请求头,以保证WebSocket连接的正常建立。
需要注意的是,如果WebSocket服务器运行在HTTPS协议下,需要在配置中添加proxy_set_header X-Forwarded-Proto $scheme;
指令,以告诉服务器使用HTTPS协议。
完成以上配置后,重新加载Nginx配置文件使其生效:sudo nginx -s reload
。
接下来,我们可以使用WebSocket客户端来测试反向代理配置是否成功。以JavaScript为例,代码如下:
var socket = new WebSocket('ws://your.server.name/'); socket.onopen = function() { console.log('WebSocket连接已建立'); }; socket.onmessage = function(event) { console.log('收到消息:' + event.data); }; socket.onclose = function() { console.log('WebSocket连接已关闭'); };
在上述示例中,我们创建了一个WebSocket对象,并指定了要连接的地址为Nginx服务器的地址。在onopen
、onmessage
和onclose
rrreee
proxy_passLa directive > spécifie le proxy inverse. L'adresse et le port du serveur WebSocket du proxy. <code>proxy_http_version
spécifie la version HTTP utilisée par le proxy inverse, ici elle est définie sur 1.1. Les directives proxy_set_header Upgrade
et proxy_set_header Connection
indiquent à Nginx de ne pas modifier les en-têtes de requête Upgrade
et Connection
lors du transfert des requêtes WebSocket. . Assurer l'établissement normal de la connexion WebSocket. Il est à noter que si le serveur WebSocket fonctionne sous le protocole HTTPS, la directive proxy_set_header X-Forwarded-Proto $scheme;
doit être ajoutée à la configuration pour indiquer au serveur d'utiliser le HTTPS. protocole. Après avoir terminé la configuration ci-dessus, rechargez le fichier de configuration Nginx pour le rendre efficace : sudo nginx -s reload
. 🎜🎜Ensuite, nous pouvons utiliser le client WebSocket pour tester si la configuration du proxy inverse a réussi. En prenant JavaScript comme exemple, le code est le suivant : 🎜rrreee🎜Dans l'exemple ci-dessus, nous avons créé un objet WebSocket et spécifié l'adresse à connecter comme adresse du serveur Nginx. Dans les fonctions de rappel onopen
, onmessage
et onclose
, nous pouvons gérer les événements de connexion WebSocket réussie, de message reçu et de fermeture de connexion. 🎜🎜Grâce à la configuration et aux exemples de code ci-dessus, nous pouvons implémenter WebSocket de proxy inverse sur Nginx et réaliser la fonction de communication instantanée. Grâce aux hautes performances et au mécanisme d'équilibrage de charge de Nginx, nous pouvons fournir des services stables et fiables pour les applications WebSocket et gérer un grand nombre de connexions simultanées. Dans le même temps, comme Nginx dispose d'outils d'exploitation, de maintenance et de surveillance matures, nous pouvons facilement effectuer l'optimisation des performances et le dépannage des applications WebSocket. 🎜🎜Pour résumer, Nginx est un excellent serveur Web Grâce à la configuration du proxy inverse, nous pouvons facilement prendre en charge WebSocket et fournir des services de messagerie instantanée hautes performances. Pour les applications Web qui doivent implémenter des fonctions de messagerie instantanée, la configuration du proxy inverse Nginx est une solution qui mérite d'être explorée et utilisée. 🎜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!