Configurar hosts virtuales nginx

Configurar hosts virtuales nginx

Tengo problemas para configurar hosts virtuales nginx en una máquina Debian GNU/Linux 7 (wheezy).

Todo lo que obtengo es un error interno del servidor 500.

Aquí hay un ejemplo de mi archivo vhost_autogen.conf:

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;
  }

}

Es casi seguro que el problema de permisos no lo es, ya que otorgué permisos completos (777), solo para estar seguro.

¿Alguna pista?

Aquí está el registro de errores:

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"

Gracias por la ayuda.

Respuesta1

Te has equivocado try_filesdentro de ambos locationbloques.

try_files  $uri $uri/ /index.php?$args;

Cuando llega, $uri/esto hace que nginx busque todos los archivos especificados en la indexdirectiva. Se enciende index.php, pasa al segundo locationy ahí es donde parece quedarse atascado en un bucle.

Los reescribiría como:

location / {
    try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
    try_files $uri =404;
}

El segundo locationno necesita indexdirectiva alguna.

información relacionada