Nginx charset 指令无法修改 Content-Type 标头

Nginx charset 指令无法修改 Content-Type 标头

我理解配置文件的 http 或服务器块中的“charset utf-8”指令应该使 nginx 在响应的标头中包含“Content-Type:text / html; charset = utf-8”,而不仅仅是“Content-Type:text / html”。

但是,我已将该指令添加到 http 块和适用的服务器块中,而“Content-Type”指令保持不变。

采取的预防措施包括:1. 每次更改配置后重新加载或重新启动 nginx。2. 之前包含“charset_types text/html text/plain;”指令。3. 进行不相关的配置更改并验证其确实具有预期效果。

我查看了这里和 nginx 文档的相关讨论,但没有找到任何解释。

答案1

charset utf-8;

在您的 server{} 块中应该就是您需要做的全部事情。根据此处的 nginx 文档

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

您可以将其放置在 http、服务器或位置上下文中。

答案2

感谢您的回复。我终于意识到我正在查看 301 响应的标头。没有尾部斜杠的 URL 被重定向到带有尾部斜杠的相同 URL。301 响应的内容类型为“text/html”。但重定向后的以下响应的内容类型为“text/html; charset=utf-8”。我不知道 301 响应声明 charset 参数有多大用处,但是,由于它确实将 text/html 声明为内容类型,如果 nginx 配置在 http 块中设置了 charset,我们是否也不应该在 301 响应中期待 charset?nginx 版本是 1.10.3(Ubuntu)。

相关内容