Konfigurieren virtueller Nginx-Hosts

Konfigurieren virtueller Nginx-Hosts

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_filesIn 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 indexDirektive angegebenen Dateien. Es stößt auf index.php, geht zu Ihrem zweiten locationund 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 locationkeine Richtlinie erforderlich .index

verwandte Informationen