O Nginx não está processando as diretivas proxy_hide_header e proxy_ignore_header

5

Tenho dificuldade em tentar ignorar o Nginx e ocultar alguns cabeçalhos de um servidor proxy.

Eu quero que o Nginx oculte e ignore os cabeçalhos "Cache-Control" e "Server", mas não funcionou, não sei por quê.

Meu conf é o seguinte:

location / {
    proxy_pass http://111.131.50.42;
    proxy_hide_header Cache-Control;
    expires 60M;
    add_header Cache-Control "public";
    proxy_ignore_headers Cache-Control;
    proxy_hide_header Cache-Control;
    access_log off;
}

Mas, mesmo com isso, ainda estou recebendo os cabeçalhos "Cache-Control" e "Server" de origem.

Você sabe o que estou fazendo errado?

P.S. Eu não posso usar o módulo ngx_headers_more. Eu não sou capaz de adicionar este módulo à nossa instalação Nginx.

    
por Dakser 02.11.2014 / 11:28

1 resposta

10

A diretiva proxy_ignore_headers diz ao nginx para ignorar o conteúdo de cabeçalhos especiais que levam a um comportamento interno específico:

“X-Accel-Expires”, “Expires”, “Cache-Control”, “Set-Cookie”, and “Vary” set the parameters of response caching;

“X-Accel-Redirect” performs an internal redirect to the specified URI;

“X-Accel-Limit-Rate” sets the rate limit for transmission of a response to a client;

“X-Accel-Buffering” enables or disables buffering of a response;

“X-Accel-Charset” sets the desired charset of a response.

Se você deseja ocultar cabeçalhos de servidores upstream, é necessário usar proxy_hide_header . O cabeçalho Server não é passado para a resposta enviada a um cliente por padrão, como Date , X-Pad e X-Accel-... headers.

Então, isso deve funcionar:

location / {
    access_log off;
    add_header Cache-Control "public";
    proxy_pass http://111.131.50.42;
    proxy_hide_header Cache-Control;
    expires 60M;
}  

Verifique se você já não está testando em um navegador com dados em cache, use curl .

    
por 02.11.2014 / 12:17