nginx reescritura o ciclo de redireccionamiento interno

13

Estoy golpeando mi cabeza contra una mesa tratando de descubrir qué está causando el ciclo de redirección en mi configuración de nginx cuando intento acceder a una URL que no existe La configuración es la siguiente:

server {
        listen       127.0.0.1:8080;
        server_name  .somedomain.com;
    root  /var/www/somedomain.com;

        access_log /var/log/nginx/somedomain.com-access.nginx.log;
    error_log  /var/log/nginx/somedomain.com-error.nginx.log debug;

        location ~* \.php.$ {
        # Proxy all requests with an URI ending with .php*
        # (includes PHP, PHP3, PHP4, PHP5...)
        include /etc/nginx/fastcgi.conf;
        }

        # all other files
        location / {
            root  /var/www/somedomain.com;
        try_files $uri $uri/ ;
        }

    error_page 404 /errors/404.html;
        location /errors/ {
                alias /var/www/errors/;
        }       

        #this loads custom logging configuration which disables favicon error logging
        include /etc/nginx/drop.conf;
}

este dominio es un sitio HTML ESTÁTICO simple solo para algunos propósitos de prueba. Esperaría que la directiva error_page se active en respuesta a que PHP-FPM no pueda encontrar los archivos dados, ya que tengo fastcgi_intercept_errors; en el bloque http y nave error_page configurado, pero supongo que la solicitud falla incluso antes de eso en algún lugar en las redirecciones internas. Cualquier ayuda sería muy apreciada.

milosgajdos
fuente
¿El navegador del cliente informa un bucle de redireccionamiento o nginx? Si es el cliente, ¿a qué ubicación están los redireccionamientos?
Shane Madden
ambos lo están informando. El cliente finalmente termina con la URL de /errors//errors//errors//errors//errors/...404.html
milosgajdos
¿Cómo es la entrada de registro de nginx?
Shane Madden

Respuestas:

11

El culpable es: try_files $uri $uri/ ;

http://nginx.org/r/try_files (tenga en cuenta que el último parámetro es el código de retorno o URI a la redirección interna)

Si no se encuentra ninguno de los archivos, se realiza una redirección interna a la uri especificada por el último parámetro.

VBart
fuente
Gracias. Acabo de tener uno de estos errores con una configuración de Roots Trellis LEMP. Sucedió después de una importación de datos de WooCommerce. Nunca lo tuve antes. ¿Qué recomendarías en estos casos? Eliminar el parámetro $uri/? Vea el parámetro aquí: github.com/roots/trellis/blob/…
rhand
2

Como han dicho otros, este es el culpable:

    try_files $uri $uri/ ;

Crea un bucle de redirección, ya que el último parámetro de try_filesdebe apuntar a la ubicación si no se encuentra el archivo. Lo resolví agregando un =404, como este:

    try_files $uri $uri/ =404 ;
joepio
fuente