Перезапись Nginx отключена? Не могу сделать простую перезапись

avatar
Kagetsuki
8 апреля 2018 в 10:07
91
1
0

У меня было много проблем с директивами перезаписи - казалось, что ничего не работает, поэтому я попытался сделать самый простой пример перезаписи, какой только мог:

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    server_name _;

    root /var/www/html;

    location / {
        rewrite ^/a$ /test.html break;
    }
}

Я предполагал, что это вернет содержимое /var/www/html/test.html по адресу http://localhost/a, но это не так, это дает мне 404. Разрешения на test.html настроены правильно и доступны по адресу http://localhost/test.html. Я предполагаю, что перезапись фактически отключена, но я не могу найти ничего подобного в nginx.conf. Приведенный выше файл настроек используется по умолчанию для доступных сайтов, и, кроме добавления rewrite_log on; в файл nginx.conf, все стандартно, как распространяется пакетом nginx 1.12.1 в Ubuntu (17.10).

Журналы не предоставляют никакой полезной информации, а включение ведения журнала перезаписи не добавляет в журналы никакой дополнительной информации. И да, я перезапускал nginx после каждой правки настроек.

Я пробовал всевозможные комбинации, так что на данный момент я просто предполагаю, что перезапись не работает/не включена? Я полностью запутался здесь - ЛЮБЫЕ подсказки были бы большой помощью.

Источник

Ответы (1)

avatar
Kagetsuki
8 апреля 2018 в 10:43
0

Понятия не имею почему, но замена break на last заставила его работать. Это сбивает меня с толку, так как с этой конфигурацией я не ожидал бы какой-либо обработки после перезаписи. Это довольно свежая установка, и на самом деле в ней нет ничего, что, я думаю, могло бы мешать - так что для этого должна быть какая-то причина? Если у кого-то есть лучший ответ, я переключу принятый, но пока это «сработало».