A diretiva Nginx charset falha ao modificar o cabeçalho Content-Type

A diretiva Nginx charset falha ao modificar o cabeçalho Content-Type

Entendo que a diretiva “charset utf-8” em um bloco http ou servidor de um arquivo de configuração deve fazer com que o nginx inclua “Content-Type: text/html; charset=utf-8” nos cabeçalhos de uma resposta, em vez de apenas “Content-Type: text/html”.

No entanto, adicionei essa diretiva ao bloco http e ao bloco de servidor aplicável, e a diretiva “Content-Type” permaneceu inalterada.

As precauções tomadas incluem: 1. Recarregar ou reiniciar o nginx após cada alteração de configuração. 2. Incluindo um “charset_types text/html text/plain;” directiva antes. 3. Fazer uma alteração de configuração não relacionada e verificar se ela tem o efeito esperado.

Examinei as discussões relacionadas aqui e a documentação do nginx e não encontrei nenhuma explicação.

Responder1

charset utf-8;

no bloco server{} deve ser tudo o que você precisa fazer. Com base na documentação do nginx aqui

http://nginx.org/en/docs/http/ngx_http_charset_module.html#source_charset

você pode colocar isso em contextos http, servidor ou localização.

Responder2

Obrigado pelas respostas. Finalmente percebi que estava olhando os cabeçalhos de uma resposta 301. URLs sem barra final são redirecionados para os mesmos URLs com barra final. A resposta 301 tem “text/html” como tipo de conteúdo. Mas a seguinte resposta após o redirecionamento tem “text/html; charset=utf-8” como seu tipo de conteúdo. Não sei o quão útil é para a resposta 301 ter o parâmetro charset declarado, mas, como declara text/html como o tipo de conteúdo, se a configuração do nginx definir charset no bloco http, não deveríamos esperar charset na resposta 301 também? A versão nginx é 1.10.3 (Ubuntu).

informação relacionada