Nginx Installation · 3 min read · Feb 14, 2026

Installation von Nginx mit PHP5 (und PHP-FPM) und MySQL-Unterstützung auf CentOS 6.3 - Seite 2

6 Konfigurieren von nginx

Die nginx-Konfiguration befindet sich in /etc/nginx/nginx.conf, die wir jetzt öffnen:

vi /etc/nginx/nginx.conf

Die Konfiguration ist leicht verständlich (mehr dazu erfahren Sie hier: http://wiki.codemongers.com/NginxFullExample und hier: http://wiki.codemongers.com/NginxFullExample2)

Zuerst (das ist optional) können Sie die Anzahl der Worker-Prozesse erhöhen und den keepalive_timeout auf einen angemessenen Wert setzen:

| [...] worker_processes 4; [...] keepalive_timeout 2; [...] |

Die virtuellen Hosts sind in server {} Containern im Verzeichnis /etc/nginx/conf.d definiert. Lassen Sie uns den Standard-vhost (in /etc/nginx/conf.d/default.conf) wie folgt ändern:

vi /etc/nginx/conf.d/default.conf

| [...] server { listen 80; server_name _; #charset koi8-r; #access_log logs/host.access.log main; location / { root /usr/share/nginx/html; index index.php index.html index.htm; } error_page 404 /404.html; location = /404.html { root /usr/share/nginx/html; } # leiten Sie Serverfehlerseiten zur statischen Seite /50x.html um # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # leiten Sie die PHP-Skripte an Apache weiter, der auf 127.0.0.1:80 hört # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # leiten Sie die PHP-Skripte an den FastCGI-Server weiter, der auf 127.0.0.1:9000 hört # location ~ \.php$ { root /usr/share/nginx/html; try_files $uri =404; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # verweigern Sie den Zugriff auf .htaccess-Dateien, wenn das Dokumentenverzeichnis von Apache # mit dem von nginx übereinstimmt # location ~ /\.ht { deny all; } } |

servername ; macht dies zu einem Standard-Catchall-vhost (natürlich können Sie hier auch einen Hostnamen wie www.example.com angeben).

Im location / Teil habe ich index.php zur Indexzeile hinzugefügt. root /usr/share/nginx/html; bedeutet, dass das Dokumentenverzeichnis das Verzeichnis /usr/share/nginx/html ist.

Der wichtige Teil für PHP ist die location ~ .php$ {} Strophe. Kommentieren Sie sie aus, um sie zu aktivieren. Ändern Sie die root-Zeile auf das Dokumentenverzeichnis der Website (z.B. root /usr/share/nginx/html;). Bitte beachten Sie, dass ich die Zeile try_files $uri =404; hinzugefügt habe, um Zero-Day-Exploits zu verhindern (siehe http://wiki.nginx.org/Pitfalls#Passing_Uncontrolled_Requests_to_PHP und http://forum.nginx.org/read.php?2,88845,page=3). Bitte stellen Sie sicher, dass Sie die fastcgi_param-Zeile in fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; ändern, da der PHP-Interpreter sonst das PHP-Skript, das Sie in Ihrem Browser aufrufen, nicht finden kann ( $document_root wird zu /usr/share/nginx/html, da wir dies als unser Dokumentenverzeichnis festgelegt haben).

PHP-FPM hört standardmäßig auf Port 9000 auf 127.0.0.1, daher sagen wir nginx, dass es sich mit 127.0.0.1:9000 über die Zeile fastcgi_pass 127.0.0.1:9000; verbinden soll. Es ist auch möglich, PHP-FPM einen Unix-Socket verwenden zu lassen - ich werde dies in Kapitel 7 beschreiben.

Jetzt speichern Sie die Datei und laden nginx neu:

/etc/init.d/nginx reload

Jetzt erstellen Sie die folgende PHP-Datei im Dokumentenverzeichnis /usr/share/nginx/html…

vi /usr/share/nginx/html/info.php

| |

Jetzt rufen wir diese Datei in einem Browser auf (z.B. http://192.168.0.100/info.php):

Wie Sie sehen, funktioniert PHP5, und es funktioniert über FPM/FastCGI, wie in der Server-API-Zeile gezeigt. Wenn Sie weiter nach unten scrollen, sehen Sie alle Module, die bereits in PHP5 aktiviert sind, einschließlich des MySQL-Moduls:

7 PHP-FPM dazu bringen, einen Unix-Socket zu verwenden

Standardmäßig hört PHP-FPM auf Port 9000 auf 127.0.0.1. Es ist auch möglich, PHP-FPM einen Unix-Socket verwenden zu lassen, um den TCP-Overhead zu vermeiden. Dazu öffnen Sie /etc/php-fpm.d/www.conf…

vi /etc/php-fpm.d/www.conf

… und ändern Sie die Listenzeile wie folgt:

| [...] ;listen = 127.0.0.1:9000 listen = /tmp/php5-fpm.sock [...] |

Dann laden Sie PHP-FPM neu:

/etc/init.d/php-fpm reload

Gehen Sie als Nächstes durch Ihre nginx-Konfiguration und alle Ihre vhosts und ändern Sie die Zeile fastcgi_pass 127.0.0.1:9000; in fastcgi_pass unix:/tmp/php5-fpm.sock;, z.B. so:

vi /etc/nginx/conf.d/default.conf

| [...] location ~ \.php$ { root /usr/share/nginx/html; try_files $uri =404; fastcgi_pass unix:/tmp/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } [...] |

Laden Sie schließlich nginx neu:

/etc/init.d/nginx reload

8 Links

Über den Autor

Falko Timme ist der Eigentümer von Timme Hosting (ultra-schnelles nginx-Webhosting). Er ist der Hauptbetreuer von HowtoForge (seit 2005) und einer der Hauptentwickler von ISPConfig (seit 2000). Er hat auch zum O’Reilly-Buch “Linux System Administration” beigetragen.

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.