我理解配置文件的 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)。