Как включить правильный HTTP-заголовок кодировки в NGINX

Как правильно включить заголовки кодировок в NGINX?

Я анализирую свой сайт с помощью Google Page Speed. Это говорит о том, что я должен указать кодировку HTML-файлов в HTTP-заголовках. Как правильно это сделать?

Я уже пытался установить charset utf-8; в server {} объявление моего файла конфигурации NGINX, но это не имеет никакого эффекта.

Мой сервер отвечает следующим заголовком:

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

Спасибо.

3 ответа

Решение

Добавление charset utf-8; это почти все, что вам нужно сделать. Вы уверены, что не забыли перезагрузить nginx после изменения файла конфигурации?

Кроме того, на момент написания curl -I http://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

Так что теперь все выглядит хорошо.

Установка charset может не сработать, если вы не установите директиву charset_types, для которой вы хотите использовать UTF-8.

Например: когда вы устанавливаете "charset utf-8;", весь HTML будет отражать, но не файлы JSON, потому что они не установлены по умолчанию в "charset_types".

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

    charset utf-8;
    source_charset utf-8;

Это то, что вам нужно. Это не будет работать для меня, если у меня нет обоих.

Возможно, вам придется настроить charset_types настройка для включения типа MIME, для которого вы хотите установить настройку кодировки (например, текст / календарь там не включены по умолчанию).

Для чего это стоит, я думаю, что text/* должен обрабатываться по умолчанию - но вы не можете использовать его здесь (как с Apache IIRC).

См. http://nginx.org/en/docs/http/ngx_http_charset_module.html

Другие вопросы по тегам