
Приложение обрабатывает всю маршрутизацию. Итак, этот базовый блок конфигурации работает:
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;
}
}