cycle de réécriture ou de redirection interne nginx


13

Je me tape la tête contre une table en essayant de comprendre ce qui cause le cycle de redirection dans ma configuration nginx lorsque j'essaie d'accéder à une URL qui n'existe pas La configuration se présente comme suit:

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

ce domaine est un simple site HTML STATIQUE, uniquement à des fins de test. Je m'attendrais à ce que la directive error_page se déclenche en réponse au fait que PHP-FPM ne soit pas en mesure de trouver les fichiers donnés car j'ai fastcgi_intercept_errors; dans le bloc http et la nef error_page mis en place, mais je suppose que la demande échoue avant même quelque part sur les redirections internes. Toute aide serait très appréciée.


Le navigateur client signale-t-il une boucle de redirection, ou est-ce que nginx? S'il s'agit du client, vers quel emplacement les redirections se dirigent-elles?
Shane Madden

les deux le signalent. Le client se retrouve finalement avec l'URL de /errors//errors//errors//errors//errors/...404.html
milosgajdos

À quoi ressemble l'entrée de journal de nginx?
Shane Madden

Réponses:


11

Le coupable est: try_files $uri $uri/ ;

http://nginx.org/r/try_files (notez que le dernier paramètre est le code retour ou l'URI vers la redirection interne)

Si aucun des fichiers n'a été trouvé, une redirection interne vers l'URI spécifié par le dernier paramètre est effectuée.


Merci. Je viens d'avoir l'une de ces erreurs avec une configuration Roots Trellis LEMP. Arrivé après une importation de données WooCommerce. Jamais auparavant. Que recommanderiez-vous dans ces cas? Supprimer le paramètre $uri/? Voir le paramètre ici: github.com/roots/trellis/blob/…
rhand

2

Comme d'autres l'ont dit, c'est le coupable:

    try_files $uri $uri/ ;

Il crée une boucle de redirection, car le dernier paramètre de try_filesdoit pointer vers l'emplacement si le fichier n'est pas trouvé. Je l'ai résolu en ajoutant un =404, comme ceci:

    try_files $uri $uri/ =404 ;
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.