Директива charset Nginx не может изменить заголовок Content-Type

Директива charset Nginx не может изменить заголовок Content-Type

Я понимаю, что директива «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, но не нашел никаких объяснений.

решение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 устанавливает charset в блоке http, не должны ли мы ожидать charset и в ответе 301? Версия nginx — 1.10.3 (Ubuntu).

Связанный контент