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

WBOY
WBOYoriginal
2023-07-05 08:36:092278parcourir

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 Upgradeproxy_set_header Connection指令告诉Nginx在转发WebSocket请求时不要修改UpgradeConnection请求头,以保证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服务器的地址。在onopenonmessageoncloserrreee

Dans la configuration ci-dessus, le 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!

Déclaration:
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