Limite de connexion au serveur proxy inverse Nginx et méthode de réglage de la file d'attente des demandes
Le serveur proxy inverse Nginx est un choix très courant et fiable lors de l'exécution d'applications réseau à haute concurrence. Toutefois, si les limites de connexion et les files d'attente de requêtes ne sont pas correctement configurées, le serveur peut rencontrer des goulots d'étranglement en termes de performances et des problèmes de déni de service. Cet article expliquera comment utiliser Nginx pour limiter le nombre de connexions et optimiser la file d'attente des requêtes.
Limite de connexion
Nginx peut limiter le nombre de connexions en définissant le paramètre worker_connections. Ce paramètre spécifie le nombre maximum de connexions que chaque processus de travail peut gérer simultanément. Lorsque le nombre de connexions atteint cette limite, les nouvelles connexions seront rejetées.
Ouvrez le fichier de configuration Nginx, recherchez le bloc http et ajoutez ou modifiez la ligne suivante :
http { ... worker_processes auto; worker_connections 1024; ... }
Dans l'exemple ci-dessus, worker_connections est défini sur 1024, ce qui signifie que chaque processus de travail peut gérer 1024 connexions simultanément. En fonction des performances matérielles du serveur et des exigences des applications, vous pouvez effectuer des ajustements en fonction des conditions réelles. Veuillez noter que la valeur de work_processes doit être définie sur un multiple du nombre de cœurs de processeur pour utiliser pleinement les ressources du serveur.
Réglage de la file d'attente des demandes
Lorsque le nombre de connexions simultanées dépasse la limite worker_connections, Nginx placera la demande dans la file d'attente en attente de traitement. Vous pouvez ajuster la longueur et le délai d'attente des demandes pour minimiser le risque de déni de service.
Procédez à l'édition du fichier de configuration Nginx et ajoutez ou modifiez la ligne suivante :
http { ... events { accept_mutex off; worker_connections 1024; worker_processes auto; multi_accept on; use epoll; ... } ... server { ... location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_read_timeout 600s; proxy_connect_timeout 600s; proxy_send_timeout 600s; proxy_buffer_size 128k; proxy_buffers 4 256k; proxy_busy_buffers_size 256k; proxy_buffering on; ... } ... } }
Dans l'exemple ci-dessus, nous avons apporté plusieurs réglages à la file d'attente des requêtes. Tout d'abord, en désactivant accept_mutex, nous désactivons le mutex afin que plusieurs processus de travail puissent accepter de nouvelles connexions en même temps. Deuxièmement, définissez multi_accept sur on pour que Nginx traite toutes les requêtes de la file d'attente le plus rapidement possible. Enfin, nous définissons le délai d'attente et la taille du tampon en fonction des besoins réels.
Exemple de code
Vous trouverez ci-dessous un exemple de serveur Node.js simple, simulant une application backend.
const http = require('http'); const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello, World! '); }); server.listen(3000, 'localhost', () => { console.log('Server running at http://localhost:3000/'); });
Dans l'exemple ci-dessus, nous avons créé un simple serveur HTTP en écoute sur le port local 3000. Puisque ce serveur est uniquement destiné à des fins de démonstration, il renverra simplement une simple chaîne "Hello, World!".
Pour utiliser Nginx comme serveur proxy inverse, vous devez enregistrer l'exemple de code ci-dessus sous forme de fichier appelé server.js
et exécuter la commande suivante pour démarrer le serveur : server.js
的文件,并执行以下命令来启动服务器:
node server.js
接下来,将以下Nginx配置保存为一个名为nginx.conf
的文件:
http { ... server { listen 80; location / { proxy_pass http://localhost:3000; } } }
通过执行以下命令来启动Nginx:
nginx -c /path/to/nginx.conf
现在,您可以通过访问http://localhost
rrreee
nginx.conf
: rrreee
Démarrez Nginx en exécutant la commande suivante :rrreee
Maintenant, vous pouvez y accéder en visitanthttp://localhost pour accéder à votre application. Toutes les requêtes seront proxy et équilibrées de charge via le serveur Nginx. 🎜🎜Résumé🎜🎜En limitant le nombre de connexions et en ajustant la file d'attente des requêtes, vous pouvez mieux gérer les applications réseau à haute concurrence. Ce qui précède décrit comment utiliser Nginx pour limiter le nombre de connexions et optimiser la file d'attente des requêtes, et fournit un exemple simple de code de serveur Node.js. Veuillez effectuer les ajustements de configuration appropriés en fonction des besoins réels et des performances matérielles du serveur. 🎜
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!