如何在 NGINX 中启用正确的字符集 HTTP 标头

如何在 NGINX 中启用正确的字符集 HTTP 标头

在 NGINX 中启用正确的字符集标头的正确方法是什么?

我正在使用 Google Page Speed 分析我的网站。它说我应该在 HTTP 标头中指定 HTML 文件的字符集。正确的做法是什么?

charset utf-8;我已经尝试在我的 NGINX 配置文件的声明中进行设置server {},但没有任何效果。

我的服务器使用以下标头进行响应:

Connection: keep-alive
Date: Fri, 16 Sep 2011 12:43:24 GMT
Last-Modified: Fri, 02 Sep 2011 15:13:17 GMT
Server: nginx/0.7.67

谢谢。

答案1

添加charset utf-8;几乎就是你需要做的一切。确保你没有忘记重新加载nginx更改配置文件后?

此外,在撰写本文时,curl -I https://vorb.de/返回以下结果:

HTTP/1.1 200 OK
Server: nginx/0.7.67
Date: Fri, 16 Sep 2011 13:20:03 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 1705
Last-Modified: Fri, 02 Sep 2011 15:13:17 GMT
Connection: keep-alive
Vary: Accept-Encoding
Accept-Ranges: bytes

现在一切看上去都很好。

答案2

如果您没有设置想要 UTF-8 的“charset_types”指令,则设置字符集可能不起作用。

例如:当您设置“charset utf-8;”时,所有 HTML 都会反映,但不会反映 JSON 文件,因为它们在“charset_types”上未默认设置。

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

答案3

这就是您所需要的。

charset utf-8;
source_charset utf-8;

除非我同时拥有两者,否则它对我来说不起作用。

答案4

您可能还必须调整设置charset_types以包含您想要为其设置字符集设置的 MIME 类型(例如,默认情况下不包含文本/日历)。

不管怎样,我认为应该text/*默认处理 - 但你不能在这里使用它(与 Apache IIRC 一样)。

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

相关内容