Maison >développement back-end >tutoriel php >Une brève discussion sur la relation entre PHP-FPM, Nginx et FastCGI

Une brève discussion sur la relation entre PHP-FPM, Nginx et FastCGI

青灯夜游
青灯夜游avant
2021-06-09 18:35:143156parcourir

Cet article parlera de la relation entre PHP-FPM, Nginx et FastCGI, ainsi que de la configuration du proxy inverse Nginx et de l'équilibrage de charge. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

Une brève discussion sur la relation entre PHP-FPM, Nginx et FastCGI

La relation entre PHP-FPM, Nginx, FastCGI

FastCGI est un protocole, il est le pont reliant les applications et les serveurs WEB. Nginx ne peut pas communiquer directement avec PHP-FPM, mais transmet la requête à PHP-FPM pour traitement via FastCGI.

location ~ \.php$ {
    try_files $uri /index.php =404;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_buffers 16 16k;
    fastcgi_buffer_size 32k;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

Ici, fastcgi_pass transmet toutes les requêtes php à php-fpm pour traitement. Vous pouvez voir grâce à la commande netstat que le processus exécuté sur le port 127.0.0.1:9000 est php-fpm.

Une brève discussion sur la relation entre PHP-FPM, Nginx et FastCGI

Proxy inverse Nginx

L'instruction la plus importante du proxy inverse Nginx est proxy_pass, telle que :

location ^~ /seckill_query/ {
    proxy_pass http://ris.filemail.gdrive:8090/;
    proxy_set_header Host ris.filemail.gdrive;
}

location ^~ /push_message/ {
    proxy_pass http://channel.filemail.gdrive:8090/;
    proxy_set_header Host channel.filemail.gdrive;
}

location ^~ /data/ {
    proxy_pass http://ds.filemail.gdrive:8087/;
    proxy_set_header Host ds.filemail.gdrive;
}

Faites correspondre le chemin de l'URL via l'emplacement et transmettez-le à un autre serveur pour traitement.

Le proxy inverse peut également être implémenté via un équilibrage de charge en amont.

Nginx Load Balancing

Présentation du module amont :

Le module d'équilibrage de charge est utilisé depuis "amont " Sélectionnez un hôte dans la liste des hôtes backend définis par la directive. nginx utilise d'abord le module d'équilibrage de charge pour trouver un hôte, puis utilise le module en amont pour interagir avec l'hôte.

Configuration d'équilibrage de charge :

upstream php-upstream {
    ip_hash;

    server 192.168.0.1;
    server 192.168.0.2;
}

location / {
    root   html;
    index  index.html index.htm;
    proxy_pass http://php-upstream;
}

Cet exemple définit une configuration d'équilibrage de charge php-upstream, qui est appliquée via la directive de proxy inverse proxy_pass. L'algorithme ip_hash utilisé ici possède de nombreux algorithmes d'équilibrage de charge, je ne les listerai donc pas tous un par un.

L'équilibrage de charge peut également être utilisé avec fastcgi_pass.

Par exemple :

fastcgi_pass http://php-upstream

Question

Quelle est la relation entre le proxy inverse et la charge équilibrage

Les deux mots proxy inverse et équilibrage de charge apparaissent souvent ensemble, mais ce sont en fait des concepts différents. L'équilibrage de charge met davantage l'accent sur un algorithme ou une stratégie qui demandera Distribué à différentes machines, il agit en fait comme. un proxy inverse.

La différence entre proxy_pass et fastcgi_pass

L'un est un module de proxy inverse et l'autre est transmis au backend factcgi pour traitement.

Une brève discussion sur la relation entre PHP-FPM, Nginx et FastCGI

Apprentissage recommandé : "Tutoriel vidéo PHP"

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer