Nginx: Como adicionar cabeçalhos apenas a arquivos e texto específicos

3

Eu tenho vários URLs que precisam adicionar os mesmos conjuntos de cabeçalho com nginx. Aqui estão os nomes dos arquivos.

File Group1
    https://www.example.com/news/2017-08-03/article-xyz/
    https://www.example.com/news/2017-08-03/article-xyz/topics/
    https://www.example.com/news/2017-08-03/article-xyz/gallery/

File Group2
    https://www.example.com/news/2017-08-02/article-abc/
    https://www.example.com/news/2017-08-02/article-abc/topics/
    https://www.example.com/news/2017-08-02/article-abc/gallery/

Portanto, neste caso, o Grupo de arquivos1 precisa:

add_header Cache-Tag  article-xyz;

E o arquivo Group2 precisa:

add_header Cache-Tag  article-abc;

Então nginx.conf deve ser algo assim

  location /news/ {
        add_header Cache-Tag  article-abc;
    }

Mas como posso aplicar isso dinamicamente em cabeçalhos de adição?

    
por Maca 03.08.2017 / 11:12

1 resposta

2

Uma solução é usar uma diretiva map no valor $request_uri . Por exemplo:

map $request_uri $cache_tag {
    default        "";
    ~/article-xyz/ "article-xyz";
    ~/article-abc/ "article-abc";
}
server {
    ...
    add_header Cache-Tag $cache_tag;
    ...
}

O bloco map está fora do bloco server (como mostrado). A instrução add_header pode estar no escopo server ou no bloco location que finalmente processa a solicitação (sujeito a regras de herança). Consulte este e este para detalhes.

Não use capturas na diretiva map , pois isso não funcionará.

    
por 03.08.2017 / 14:15

Tags