Heim  >  Artikel  >  Betrieb und Instandhaltung  >  So konfigurieren und optimieren Sie FastCGI in Nginx

So konfigurieren und optimieren Sie FastCGI in Nginx

WBOY
WBOYnach vorne
2023-05-21 08:16:272657Durchsuche

fastcgi:

fastcgi wurde aus CGI entwickelt und verbessert. Der Hauptnachteil der herkömmlichen CGI-Schnittstellenmethode ist die schlechte Leistung, da der Skriptparser jedes Mal, wenn der HTTP-Server auf ein dynamisches Programm trifft, neu gestartet werden muss, um die Analyse durchzuführen, und die Ergebnisse dann an den HTTP-Server zurückgegeben werden. Dies ist bei hohem gleichzeitigem Zugriff nahezu nicht verfügbar. Darüber hinaus weist die traditionelle CGI-Schnittstellenmethode eine geringe Sicherheit auf und wird derzeit nur noch selten verwendet.

Die Fastcgi-Schnittstelle verwendet eine C/S-Struktur, die den http-Server und den Skript-Parsing-Server trennen und einen oder mehrere Skript-Parsing-Daemons auf dem Skript-Parsing-Server starten kann. Jedes Mal, wenn der http-Server auf ein dynamisches Programm trifft, kann es zur Ausführung direkt an den Fastcgi-Prozess übermittelt werden und das Ergebnis wird dann an den Browser zurückgegeben. Mit dieser Methode kann der HTTP-Server ausschließlich statische Anforderungen verarbeiten oder die Ergebnisse des dynamischen Skriptservers an den Client zurückgeben, was die Leistung des gesamten Anwendungssystems erheblich verbessert.

nginx unterstützt keinen direkten Aufruf oder Parsing externer Programme. Alle externen Programme (einschließlich PHP) müssen über die Fastcgi-Schnittstelle aufgerufen werden. Die Fastcgi-Schnittstelle ist ein Socket unter Linux (dieser Socket kann ein Datei-Socket oder ein IP-Socket sein). Um ein CGI-Programm aufzurufen, wird außerdem ein FastCGI-Wrapper benötigt (ein Wrapper kann als ein Programm verstanden werden, das zum Starten eines anderen Programms verwendet wird). Dieser Wrapper ist an einen festen Socket gebunden, beispielsweise an einen Port oder einen Datei-Socket. Wenn Nginx über die FastCGI-Schnittstelle eine CGI-Anfrage sendet, empfängt der Wrapper die Anfrage und erzeugt dann einen neuen Thread. Dieser Thread ruft den Interpreter oder ein externes Programm auf, um das Skript zu verarbeiten und dann die Rückgabedaten zu lesen Die zurückgegebenen Daten werden über die Fastcgi-Schnittstelle über den festen Socket an Nginx weitergeleitet. Schließlich sendet Nginx die zurückgegebenen Daten an den Client. Dies ist der gesamte Vorgang von Nginx + Fastcgi. Der detaillierte Vorgang ist in der Abbildung dargestellt.

So konfigurieren und optimieren Sie FastCGI in Nginx

Beispiel:

So konfigurieren und optimieren Sie FastCGI in Nginx

nginx-Optimierungskonfigurationsbeispiel für Fastcgi-Parameter

Nach der Konfiguration von nginx + fastcgi werden einige Fastcgi-Optimierungen vorgenommen, um den schnellen und stabilen Betrieb der PHP-Umgebung unter nginx sicherzustellen Anweisungen müssen hinzugefügt werden. Nachfolgend finden Sie ein Optimierungsbeispiel. Fügen Sie der http-Ebene in der Nginx-Hauptkonfigurationsdatei den folgenden Code hinzu.

fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=test:10m inactive=5m; 
fastcgi_connect_timeout 300; 
fastcgi_send_timeout 300; 
fastcgi_read_timeout 300; 
fastcgi_buffer_size 64k; 
fastcgi_buffers 4 64k; 
fastcgi_busy_buffers_size 128k; 
fastcgi_temp_file_write_size 128k; 
fastcgi_cache test; 
fastcgi_cache_valid 200 302 1h; 
fastcgi_cache_valid 301 1d; 
fastcgi_cache_valid any 1m;

Die Bedeutung des obigen Codes:

  • In der ersten Codezeile werden der Dateipfad, die Verzeichnisstrukturebene, die Speicherzeit des Schlüsselwortbereichs und die Zeit zum Löschen inaktiver Daten des Fastcgi-Cache festgelegt.

  • fastcgi_connect_timeout gibt den Timeout für die Verbindung zum Backend-Fastcgi an.

  • fastcgi_send_timeout gibt den Timeout für das Senden von Anfragen an fastcgi an. Dieser Wert ist der Timeout für das Senden von Anfragen an fastcgi, nachdem zwei Handshakes abgeschlossen wurden.

  • fastcgi_read_timeout gibt den Timeout für den Empfang von Fastcgi-Antworten an. Dieser Wert ist der Timeout für den Empfang von Fastcgi-Antworten, nachdem zwei Handshakes abgeschlossen wurden.

  • fastcgi_buffer_size wird verwendet, um die Größe des Puffers anzugeben, der zum Lesen des ersten Teils der Fastcgi-Antwort erforderlich ist. Dieser Wert gibt an, dass ein 64-KB-Puffer zum Lesen des ersten Teils der Antwort (Antwortheader) verwendet wird auf den Wert gesetzt werden, der durch die Option „Fastcgi_buffers“ angegeben wird. Puffergröße.

  • fastcgi_buffers gibt an, wie viele und wie große Puffer lokal benötigt werden, um Fastcgi-Antwortanforderungen zu puffern. Wenn die von einem PHP-Skript generierte Seitengröße 256 KB beträgt, werden vier 64 KB große Puffer für die Zwischenspeicherung zugewiesen. Wenn die Seitengröße größer als 256 KB ist, wird der Teil, der größer als 256 KB ist, im durch fastcgi_temp angegebenen Pfad zwischengespeichert Kein guter Ansatz, da Daten im Speicher schneller verarbeitet werden können als auf einer Festplatte. Im Allgemeinen sollte dieser Wert der Mittelwert der von den PHP-Skripten auf der Site generierten Seitengröße sein. Wenn die von den meisten Skripten auf der Site generierte Seitengröße 256 KB beträgt, kann dieser Wert auf „16 16 KB“, „4“ festgelegt werden 64k", usw.

  • Der Standardwert von fastcgi_busy_buffers_size ist doppelt so groß wie fastcgi_buffers.

  • fastcgi_temp_file_write_size gibt an, wie groß ein Datenblock beim Schreiben von Cache-Dateien verwendet wird. Der Standardwert ist doppelt so hoch wie der von fastcgi_buffers.

  • Aktivieren Sie den Fastcgi-Cache und geben Sie ihm einen Namen, der sich auf die Funktion von fastcgi_cache bezieht. Das Einschalten des Caches ist sehr nützlich, es kann die Belastung der CPU effektiv reduzieren und das Auftreten von 502-Fehlern verhindern, aber das Einschalten des Caches kann je nach Situation auch viele Probleme verursachen.

  • fastcgi_cache_valid und fastcgi werden verwendet, um die Cache-Zeit des Antwortcodes anzugeben. Der Wert im Beispiel gibt an, dass 200 und 302 Antworten eine Stunde lang zwischengespeichert werden, 301 Antworten werden einen Tag lang zwischengespeichert und andere Antworten werden zwischengespeichert 1 Minute lang zwischengespeichert werden.

Das obige ist der detaillierte Inhalt vonSo konfigurieren und optimieren Sie FastCGI in Nginx. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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