Ich habe Probleme beim Konfigurieren virtueller Nginx-Hosts auf einer Debian GNU/Linux 7-Maschine (Wheezy).
Ich erhalte lediglich die Meldung „500 Internal Server Error“.
Hier ist ein Beispiel meiner vhost_autogen.conf-Datei:
server {
listen *:80;
server_name api-dev.domain.com;
access_log /var/log/nginx/api-dev.domain.com.access.log;
error_log /var/log/nginx/api-dev.domain.com.error.log;
location / {
root /code/api.domain.com/public;
try_files $uri $uri/ /index.php?$args;
index index.html index.htm index.php;
}
location ~ \.php$ {
root /code/api.domain.com/public;
try_files $uri $uri/ /index.php?$args;
index index.html index.htm index.php;
fastcgi_index index.php;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param APP_ENV dev;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
}
}
Ein Berechtigungsproblem liegt mit ziemlicher Sicherheit nicht vor, da ich zur Sicherheit alle Berechtigungen (777) erteilt habe.
Irgendwelche Hinweise?
Hier ist das Fehlerprotokoll:
2013/12/22 17:08:11 [error] 4341#0: *16 rewrite or internal redirection cycle while internally redirecting to "/index.php", client: 192.168.56.1, server: api-dev.domain.com, request: "GET / HTTP/1.1", host: "api-dev.domain.com"
Danke für die Hilfe.
Antwort1
try_files
In beiden Blöcken liegt ein Fehler vor location
.
try_files $uri $uri/ /index.php?$args;
Wenn dies eintritt, $uri/
sucht nginx nach allen in der index
Direktive angegebenen Dateien. Es stößt auf index.php
, geht zu Ihrem zweiten location
und dort scheint es in einer Schleife steckenzubleiben.
Ich würde es folgendermaßen umschreiben:
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
try_files $uri =404;
}
Für die zweite Variante ist überhaupt location
keine Richtlinie erforderlich .index