
O aplicativo cuida de todo o roteamento. Então este bloco de configuração básica funciona:
location / {
try_files $uri $uri/ /index.html;
}
O problema é que desejo adicionar um cabeçalho personalizado sempre que um visitante solicitar um determinado URI. Por exemplo, /content
. Bem, isso deve ser fácil como:
location ~ ^/content {
try_files $uri $uri/ /index.html;
add_header X-CUSTOM-HEADER value;
}
Mas isso não funciona. O Nginx não está criando esse cabeçalho. Depois, tentei retirar a try_files
directiva docontenteblock, mas isso obviamente não funciona, pois não há uma /content
pasta "real" no diretório raiz. Assim, o nginx irá lançar404 não encontradoerro.
Também tentei mover esse bloco para dentro do bloco de localização raiz. Também não está funcionando.
No Apache, isso pode ser feito facilmente usando isto:
<If "%{THE_REQUEST} =~ pattern">
Header set HEADER value;
</If>
Responder1
Você pode definir o cabeçalho usando uma variável mapeada. Se a variável for definida como uma string vazia, o cabeçalho será descartado silenciosamente.
Por exemplo:
map $request_uri $myheader {
~^/content a_value;
}
server {
...
add_header X-CUSTOM-HEADER $myheader;
location / {
try_files $uri $uri/ /index.html;
}
}