Heim  >  Artikel  >  Backend-Entwicklung  >  Eine kurze Diskussion über die Beziehung zwischen PHP-FPM, Nginx und FastCGI

Eine kurze Diskussion über die Beziehung zwischen PHP-FPM, Nginx und FastCGI

青灯夜游
青灯夜游nach vorne
2021-06-09 18:35:143010Durchsuche

In diesem Artikel erfahren Sie mehr über die Beziehung zwischen PHP-FPM, Nginx und FastCGI sowie über die Konfiguration des Nginx-Reverse-Proxys und des Lastausgleichs. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.

Eine kurze Diskussion über die Beziehung zwischen PHP-FPM, Nginx und FastCGI

Die Beziehung zwischen PHP-FPM, Nginx, FastCGI

FastCGI ist ein Protokoll, das eine Brücke zwischen Anwendungen und WEB-Servern darstellt. Nginx kann nicht direkt mit PHP-FPM kommunizieren, sondern leitet die Anfrage zur Verarbeitung über FastCGI an PHP-FPM weiter.

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;
}

Fastcgi_pass leitet hier alle PHP-Anfragen zur Verarbeitung an PHP-FPM weiter. Sie können anhand des Befehls netstat erkennen, dass der Prozess, der auf Port 127.0.0.1:9000 ausgeführt wird, php-fpm ist. Zum Beispiel:

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;
}

Ordnen Sie den URL-Pfad dem Standort zu und leiten Sie ihn zur Verarbeitung an einen anderen Server weiter. Eine kurze Diskussion über die Beziehung zwischen PHP-FPM, Nginx und FastCGI

Reverse-Proxy kann auch durch Lastausgleich im Upstream implementiert werden.

Nginx Load Balancing

Einführung in das Upstream-Modul:

Das Load Balancing-Modul wird verwendet, um einen Host aus der durch die „Upstream“-Direktive definierten Backend-Hostliste auszuwählen. Nginx verwendet zunächst das Lastausgleichsmodul, um einen Host zu finden, und verwendet dann das Upstream-Modul, um mit dem Host zu interagieren.

Lastausgleichskonfiguration:
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;
}
Dieses Beispiel definiert eine Lastausgleichskonfiguration für PHP-Upstream und wendet diese Konfiguration über die Reverse-Proxy-Direktive „proxy_pass“ an. Der hier verwendete ip_hash-Algorithmus verfügt über viele Lastausgleichsalgorithmen, daher werde ich sie nicht alle einzeln auflisten.

Load Balancing kann auch auf fastcgi_pass verwendet werden.

Wie zum Beispiel:

fastcgi_pass http://php-upstream

Frage

Welche Beziehung besteht zwischen Reverse-Proxy und Lastausgleich? Die beiden Wörter Reverse-Proxy und Lastausgleich erscheinen oft zusammen, unterscheiden sich jedoch tatsächlich im Konzept von Beim Lastausgleich liegt der Schwerpunkt mehr auf einem Algorithmus oder einer Strategie zur Verteilung von Anforderungen auf verschiedene Maschinen, sodass er tatsächlich die Rolle eines Reverse-Proxys übernimmt.

Der Unterschied zwischen Proxy_Pass und Fastcgi_Pass

Eines ist das Reverse-Proxy-Modul, das andere wird zur Verarbeitung an das Factcgi-Backend weitergeleitet.

Empfohlenes Lernen: „PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonEine kurze Diskussion über die Beziehung zwischen PHP-FPM, Nginx und FastCGI. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:juejin.cn. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen