Ich bin es eigentlich gewöhnt meine Agavi Seiten mit Lighttpd auszuliefern. Seit kurzem läuft vieles hinter dem Nginx. Da die Konfiguration für mich nicht so gewohnt war, möchte ich hier einfach mal veröffentlichen, wie ich Nginx mit Agavi eingerichtet hab. Am besten die Stellen anpassen wo "HINT:" steht.
Erstmal braucht man php5-fpm. Unter ubuntu ging es so:
$ sudo apt-get install php5-fpm
Nun eine Datei anlegen:
$ vim /etc/nginx/sites-enabled/dracoblue.net
Und das folgende dort rein tun:
server {
listen dracoblue.net:80;
# HINT: Hier auf alle Fälle server_name setzen, sonst sieht Agavi nicht, dass es sich
# um dracoblue.net handelt und generiert die URLs mit "localhost" oder ähnlichem
server_name dracoblue.net;
location / {
# HINT: Das Verzeichnis wo die index.php ist
root /home/dracobluenet/tags/1.0.0/pub;
index index.php;
# HINT: Alle Anfragen (außer an "static") sollen index.php ausgeliefert werden
location ~* ^/(favicon.ico|robots.txt|static) {
break;
}
# HINT: Alle Anfragen (außer an "static") sollen index.php ausgeliefert werden
if ($uri !~ "^/(favicon.ico|robots.txt|static|index.php)") {
rewrite ^/([^?]*)$ /index.php?/$1 last;
}
}
location ~ \.php($|/) {
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
# HINT: Das Verzeichnis wo die index.php liegt $fastcgi_script_name
fastcgi_param SCRIPT_FILENAME /home/dracobluenet/tags/1.0.0/pub$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
}
}
Wie Du siehst, haben meine Projekte normalerweise lediglich den "static" Ordner, der nicht von Agavi ausgeliefert. Das sorgt dafür, dass der nginx nicht so viel ausprobieren muss um rauszufinden, ob die datei von php ausgeliefert wird oder nicht. Hier habe ich auch noch robots.txt und das favicon.ico hinzugefügt, weil man die meistens ja auch im root hat.
Nun noch Nginx neu starten:
$ /etc/init.d/nginx restart