nginx переписати або внутрішній цикл перенаправлення


13

Я стукаю головою об таблицю, намагаючись зрозуміти, що викликає цикл перенаправлення в моїй конфігурації nginx при спробі отримати доступ до URL-адреси, яка не існує. Конфігурація йде наступним чином:

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

цей домен - це простий СТАТИЧНИЙ HTML-сайт лише для певних цілей тестування. Я б очікував, що директива error_page запуститься у відповідь на те, що PHP-FPM не зможе знайти задані файли, оскільки у мене є fastcgi_intercept_errors; в блоці http і налаштовано error error_page, але я здогадуюсь, що запит не працює навіть раніше, ніж десь у внутрішніх переадресаціях. Будь-яка допомога буде дуже вдячна.


Чи оглядає клієнтський браузер про цикл переадресації, або це nginx? Якщо це клієнт, до якого місця переадресації?
Шейн Медден

обоє повідомляють про це. Зрештою, клієнт отримує URL-адресу /errors//errors//errors//errors//errors/...404.html
milosgajdos

Як виглядає запис журналу від nginx?
Шейн Мадден

Відповіді:


11

Винуватець: try_files $uri $uri/ ;

http://nginx.org/r/try_files (зауважте, що останній параметр - це код повернення або URI до внутрішнього переадресації)

Якщо жоден з файлів не знайдено, робиться внутрішнє переадресація на uri, визначений останнім параметром.


Спасибі. Якраз була одна з цих помилок при налаштуванні LEMP Roots Trellis. Сталося після імпорту даних WooCommerce. Ніколи цього не мали. Що б ти порадив у цих випадках? Видалити параметр $uri/? Дивіться параметр тут: github.com/roots/trellis/blob/…
rhand

2

Як заявили інші, це винуватця:

    try_files $uri $uri/ ;

Він створює цикл перенаправлення, оскільки останній параметр try_filesповинен вказувати на місце, якщо файл не знайдено. Я вирішив це, додавши =404, наприклад, такий:

    try_files $uri $uri/ =404 ;
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.