add_header para determinado request_uri

add_header para determinado request_uri

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_filesdirectiva docontenteblock, mas isso obviamente não funciona, pois não há uma /contentpasta "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;
    }
}

informação relacionada