add_header для определенного request_uri

add_header для определенного request_uri

Приложение обрабатывает всю маршрутизацию. Итак, этот базовый блок конфигурации работает:

location / {
    try_files $uri $uri/ /index.html;
}

Проблема в том, что я хочу добавлять пользовательский заголовок всякий раз, когда посетитель запрашивает определенный URI. Например, /content. Ну, это должно быть просто, так как:

location ~ ^/content {
   try_files $uri $uri/ /index.html;
   add_header X-CUSTOM-HEADER value;
}

Но это не работает. Nginx не создает этот заголовок. Затем я попытался удалить try_filesдирективу изсодержаниеblock но это не работает, очевидно, так как в корневом каталоге нет "реальной" /contentпапки. Таким образом, nginx выдаст404 Не Найденоошибка.

Я также пытался переместить этот блок внутрь блока корневого местоположения. Тоже не работает.


В Apache это можно легко сделать с помощью следующего:

<If "%{THE_REQUEST} =~ pattern">
    Header set HEADER value;
</If>

решение1

Вы можете задать заголовок, используя сопоставленную переменную. Если переменная установлена ​​на пустую строку, заголовок будет молча отброшен.

Например:

map $request_uri $myheader {
    ~^/content   a_value;
}
server {
    ...
    add_header X-CUSTOM-HEADER $myheader;

    location / {
        try_files $uri $uri/ /index.html;
    }
}

Связанный контент