Nginx charset 지시문이 Content-Type 헤더를 수정하지 못함

Nginx charset 지시문이 Content-Type 헤더를 수정하지 못함

나는 구성 파일의 http 또는 서버 블록에 있는 "charset utf-8" 지시문이 nginx에 "Content-Type: text/html; "Content-Type: text/html"만 사용하는 대신 응답 헤더에 charset=utf-8"을 사용합니다.

하지만 해당 지시문을 http 블록과 해당 서버 블록 모두에 추가했으며 "Content-Type" 지시문은 변경되지 않았습니다.

주의 사항은 다음과 같습니다: 1. 각 구성 변경 후 nginx를 다시 로드하거나 다시 시작합니다. 2. "charset_types text/html text/plain;"을 포함합니다. 지시문 전에. 3. 관련 없는 구성 변경을 수행하고 예상한 효과가 있는지 확인합니다.

나는 여기와 nginx 문서에서 관련 토론을 보았지만 어떤 설명도 찾지 못했습니다.

답변1

charset utf-8;

서버{} 블록에 해야 할 일이 모두 있어야 합니다. nginx 문서를 기반으로 here

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”을 콘텐츠 유형으로 사용합니다. charset 매개변수를 선언하는 것이 301 응답에 얼마나 유용한지는 모르겠지만 text/html을 콘텐츠 유형으로 선언하므로 nginx 구성이 http 블록에 charset을 설정하는 경우 charset을 기대해서는 안 됩니다. 301 응답에서도요? nginx 버전은 1.10.3(Ubuntu)입니다.

관련 정보