Maison  >  Article  >  cadre php  >  Tutoriel sur l'utilisation du proxy inverse Nginx et de l'équilibrage de charge dans Swoole

Tutoriel sur l'utilisation du proxy inverse Nginx et de l'équilibrage de charge dans Swoole

PHPz
PHPzoriginal
2023-06-13 10:47:29926parcourir

Swoole est une bibliothèque de communication réseau légère et performante pour le langage PHP. Son émergence a considérablement amélioré les performances et l'évolutivité des applications PHP. Nginx est un serveur Web populaire et est également largement utilisé pour le proxy inverse et l'équilibrage de charge. L'utilisation du proxy inverse de Nginx et de l'équilibrage de charge dans Swoole permet de mieux tirer parti de Swoole. Ce qui suit est un didacticiel sur l'utilisation de Nginx pour implémenter le proxy inverse Swoole et l'équilibrage de charge.

  1. Installer Nginx

Vous devez d'abord installer Nginx, qui peut être installé via la commande suivante :

sudo apt-get update
sudo apt-get install nginx
  1. Configurer Nginx

Une fois l'installation terminée, Nginx doit être configuré. Le fichier de configuration se trouve dans /etc/nginx/sites-available/default. Ouvrez le fichier pour l'éditer et modifiez-le avec le contenu suivant :

upstream swoole {
  server 127.0.0.1:9501 weight=10 max_fails=3 fail_timeout=30s;
  server 127.0.0.1:9502 weight=5 max_fails=3 fail_timeout=30s;
}

server {
  listen 80;
  server_name example.com;

  location / {
    proxy_pass http://swoole;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

Dans le fichier de configuration ci-dessus, nous avons défini un amont nommé swoole, qui contient les deux adresses et poids surveillés par le service Swoole. Nous avons également mis en place un hôte virtuel pour écouter le port 80 et distribuer les requêtes au cluster swoole via un proxy inverse.

  1. Service d'écriture Swoole

Ensuite, vous devez écrire un service Swoole simple pour recevoir les demandes transmises par Nginx. Voici un exemple de code simple :

<?php
 
$http = new SwooleHttpServer("0.0.0.0", 9501);
 
$http->on('request', function ($request, $response) {
    $response->header("Content-Type", "text/plain");
    $response->end("Hello World
");
});
 
$http->start();

Dans le code ci-dessus, nous avons créé un service Swoole Http écoutant sur le port 9501 et avons renvoyé une chaîne Hello World dans la fonction de rappel de requête.

  1. Démarrez le service Swoole

Exécutez la commande suivante pour démarrer le service Swoole :

php server.php

À ce stade, le service Swoole a été démarré avec succès et écoute sur le port 9501.

  1. Démarrez Nginx

Enfin, exécutez la commande suivante pour démarrer Nginx :

sudo service nginx start

À ce stade, Nginx a démarré avec succès et vous pouvez tester la réponse du service Swoole en visitant http://example.com/ .

  1. Test de l'équilibrage de charge

Afin de tester la fonction d'équilibrage de charge de Nginx, nous pouvons démarrer un autre service Swoole Http pour simuler un autre serveur et exécuter la commande suivante pour démarrer :

php server.php --port=9502

A ce moment, dans la configuration de Nginx fichier, nous définissons le poids d'un port dans le cluster swoole comme 10 et le poids de l'autre port comme 5. En d'autres termes, Nginx transmettra environ 2/3 des requêtes au port 9501 et 1/3 des requêtes au port 9502. Nous pouvons tester la fonctionnalité d'équilibrage de charge en actualisant http://example.com/ plusieurs fois dans le navigateur.

Résumé

Grâce aux opérations ci-dessus, nous avons implémenté avec succès les fonctions de proxy inverse et d'équilibrage de charge de Nginx dans Swoole. Les fonctions de proxy inverse et d'équilibrage de charge de Nginx peuvent nous aider à mieux répartir les requêtes dans les applications Swoole et à améliorer la concurrence et la stabilité des sites Web dynamiques.

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