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.