Na minha configuração do nginx, estou adicionando alguns cabeçalhos http globalmente na seção http. No entanto, um cabeçalho específico depende de um valor que só conheço após mapear o bloco de localização.
Quando adiciono a add_header
diretiva no bloco location, todos os cabeçalhos da seção http precisam ser listados novamente, pois não serão herdados. Isso é conforme pretendido, conforme indicado nos documentos :
Estas diretivas são herdadas do nível de configuração anterior se e somente se não houver diretivas add_header definidas no nível atual.
Para contornar isso, tentei definir o cabeçalho na seção http com um valor de variável e usei um mapa para inicializar a variável (como set
não é permitido no http
nível, veja a documentação ). Eu então set
a variável para outro valor dentro do location
bloco:
http {
map "" $my_header {
default "A";
}
add_header X-My-Header $my_header;
# ...
server {
# ...
location /myLocation {
set $my_header "B";
# ...
}
}
}
Isso, porém, não funcionará – X-My-Header
sempre terá o valor A
.
Existe alguma maneira de fazer isso (sem usar add_header
diretamente location
e, portanto, a necessidade de repetir ou include
todos os outros cabeçalhos http
também)?
E, apenas por razões educativas, porque é que a minha tentativa não está a funcionar como esperado?