Я понимаю, что директива charset utf-8 в блоке http или server файла конфигурации должна заставить 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 и не нашел никаких объяснений.
Спасибо за ответы. Я наконец понял, что смотрю на заголовки ответа 301. URL без косой черты перенаправляются на те же URL с косой чертой в конце. Ответ 301 имеет тип содержимого «text / html». Но следующий ответ после перенаправления имеет «text / html; charset = utf-8 »в качестве типа содержимого. Я не знаю, насколько полезно для ответа 301 иметь параметр charset, но, поскольку он объявляет text / html в качестве типа содержимого, если конфигурация nginx устанавливает кодировку в блоке http, мы не должны ожидать charset в ответе 301 тоже? Версия nginx - 1.10.3 (Ubuntu).
charset utf-8;
в вашем блоке server {} должно быть все, что вам нужно сделать. На основе документации nginx здесь
http://nginx.org/en/docs/http/ngx_http_charset_module.html#source_charset
вы можете поместить это в контекст http, server или location.