Как правильно включить правильные заголовки кодировки в 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
Спасибо.
Добавление 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_types, которая вам нужна в UTF-8.
Например: когда вы устанавливаете «charset utf-8;», весь HTML будет отражать, но не файлы JSON, потому что они не установлены по умолчанию для «charset_types».
http://nginx.org/en/docs/http/ngx_http_charset_module.html#charset_types
Возможно, вам также придется отрегулировать charset_types
настройка, чтобы включить тип MIME, для которого вы хотите установить настройку кодировки (например, текст / календарь не включается туда по умолчанию).
Я думаю, что это того стоит text/*
должен обрабатываться по умолчанию, но вы не можете использовать его здесь (как с Apache IIRC).
Видеть http://nginx.org/en/docs/http/ngx_http_charset_module.html#charset_types
charset utf-8;
source_charset utf-8;
Это то, что вам нужно. Для меня это не сработает, если у меня нет обоих.