Visit me elsewhere:

Nginx Einrichtung

Nachdem ich den Webserver-Wechsel zun├Ąchst auf Cherokee vollziehen wollte gab es f├╝r diesen zun├Ąchst einmal kein aktuelles deb-Paket / Repo und au├čerdem schien er (in der ├Ąlteren Version die verf├╝gbar war) auf dem Server massive Probleme zu bereiten, die nach dem Beenden nicht mehr auftraten. Die zweite Wahl war Nginx, welches k├╝rzlich erst in der Version 1.0 ver├Âffentlicht wurde und nach Apache httpd und Lighttpd jener Webserver mit dem gr├Â├čten Marktanteil ist, und vor allem auch sehr gro├če Webseiten hostet. F├╝r Debian und Ubuntu-versionierte Systeme gibt es auch aktuelle Pakete von Nginx, etwa GetDeb f├╝r Debian. Der Umstieg ist nun jedenfalls vollzogen.

Cherokee hatte ich auch bereits laufen und konfiguriert. Ansich sehr gut in Konfiguration etc. Aber eben, f├╝r mich, mit einem kleinen und einem gro├čen Problem verbunden.

Nginx nutzt Textkonfigurationsdateien.

F├╝r einen Default-Server gibt man einen leeren Servernamen an:

server {

listen 80 default_server; ## listen for ipv4

#listen [::]:8080 default_server; ## listen for ipv4 and ipv6

server_name “”;

access_log /var/log/nginx/default.access.log;

error_log /var/log/nginx/default.error.log;

root /var/www/default;

index index.html;

location / {
 }

 location = /robots.txt  { access_log off; log_not_found off; }
 location = /favicon.ico { access_log off; log_not_found off; }
}

root (Hauptverzeichnis) und index (Index-Dateien) definiert man zun├Ąchst im Server (nicht wie oft zu finden nur in einer location ÔÇô dort sollte man h├Âchstens das server-default ├╝berschreiben).

F├╝r PHP installiert man php-fpm, einen FastCGI-Daemon f├╝r PHP, inklusive Startscript etc (ab PHP-Version 5.3.3 vorhanden, je nach Paket-Repository auch ohne/vorher). Im Server definiert man dann, dass Dateien die auf .php enden geparst werden:

location ~ \.php$ {
 fastcgi_pass   127.0.0.1:9000;
 fastcgi_index  index.php;
 include fastcgi_params;
 fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
}

Hier gab es auch, je nach Quelle, verschiedene fastcgi_param Werte. So hat es f├╝r mich funktioniert. Mit deminclude fastcgi_paramswerden Standardwerte aus der fastcgi_params-Datei inkludiert und gesetzt. Den Standardwert f├╝r SCRIPT_FILENAME musste ich anschlie├čend aber mit $document_root$fastcgi_script_name ├╝berschreiben.

.htaccess Dateien werden nicht geparst. Eventuell dort definierte Rewrite-Regeln m├╝ssen also in die Serverkonfiguration umgesetzt und ├╝bernommen werden. (Ist auch richtig so, von htaccess Dateien halte ich nicht viel. Performancem├Ą├čig muss mit ihnen jeder Ordner auf diese ├╝berpr├╝ft werden. Bei jedem Request wird diese ggf. geparst. Und die Serverkonfiguration sollte ohnehin in einer statischen Serverkonfiguration, an einer Stelle, vorgenommen werden.) Eine Regel f├╝r eventuell zu versteckende Dateien (die mit einem Punkt beginnen) muss ebenfalls definiert werden.

In der Conf au├čerdem noch gzip Kompression aktiviert und server_tokens.

Was noch fehlt ist passendes Cache-Control. Standardm├Ą├čig wird der CGI-generierte Daten no-cache, also die Aufforderung nicht zwischenzuspeichern, angegeben, bei statischen Daten das zuletzt-ge├Ąndert Datum. Somit ist wird zumindest schon etwas gecachet, l├Ąsst sich aber noch optimieren.

Beim Einrichten au├čerdem noch wichtig zu beachten: Die h├Ąufigsten Irrt├╝mer bei der Konfiguration.