ngx_http_charset_module
ngx_http_charset_module 모듈은 “Content-Type” 응답 헤더 필드에 지정된 문자 세트를 추가합니다. 또한, 데이터도 하나의 문자 세트에서 다른 문자 세트로 변환할 수 있지만 몇 가지 제한이 있습니다.
- 변환은 서버에서 클라이언트, 한 방향으로 실행됩니다.
- 1바이트 문자 세트만 변환할 수 있습니다.
- 또는, 1바이트 문제 세트만 UTF-8로 변환되거나, UTF-8에서 변환할 수 있습니다.
예제 구성
include conf/koi-win;
charset windows-1251;
source_charset koi8-r;
Directives
Syntax: charset charset | off;
Default: charset off;
Context: http, server, location, if in location
“Content-Type” 응답 헤더 필드에 지정된 문자 세트를 추가합니다. 이 문자 세트가 source_charset 명령에서 지정한 것과 다를 경우, 변환을 실행합니다.
매개변수 off는 “Content-Type” 응답 헤더 필드에 문자 세트를 추가한 작업을 취소합니다.
문자 세트는 변수로 정의할 수 있습니다.
charset $charset;
이 경우, 변수에 사용 가능한 모든 값은 구성에서 charset_map, charset 또는 source_charset 명령의 형식으로 한 번 이상 나와야 합니다. utf-8, windows-1251 및 koi8-r 문자 세트의 경우, conf/koi-win, conf/koi-utf, conf/win-utf 파일을 구성에 포함하는 것만으로 충분합니다. 다른 문자 세트의 경우, 다음과 같이 가상의 변환 테이블을 만드는 것만으로 충분합니다.
charset_map iso-8859-5 _ { }
또한, 문자 세트는 “X-Accel-Charset” 응답 헤더 필드에서 설정할 수 있습니다. 이 기능은 proxy_ignore_headers, fastcgi_ignore_headers, uwsgi_ignore_headers, scgi_ignore_headers, grpc_ignore_headers 명령을 사용하여 비활성화할 수 있습니다.
Syntax: charset_map charset1 charset2 { ... }
Default: —
Context: http
문자 세트를 변환하는 변환 테이블을 설명합니다. 동일한 데이터를 사용하여 역변환 테이블을 구축합니다. 문자 코드는 16진수로 표시됩니다. 80-FF 번위에서 누락된 문자는 “?”로 대체합니다. UTF-8에서 변환할 때 1바이트 문자 세트에서 누락되는 문자는 “&#XXXX;”로 대체합니다.
예:
charset_map koi8-r windows-1251 {
C0 FE ; # small yu
C1 E0 ; # small a
C2 E1 ; # small b
C3 F6 ; # small ts
...
}
UTF-8로 변환하는 변환 테이블을 설명할 때는 UTF-8 문자 세트에 대한 코드를 두 번째 열에 입력해야 합니다. 예를 들어 다음과 같습니다.
charset_map koi8-r utf-8 {
C0 D18E ; # small yu
C1 D0B0 ; # small a
C2 D0B1 ; # small b
C3 D186 ; # small ts
...
}
koi8-r에서 windows-1251로 변환하거나, koi8-r과 windows-1251에서 utf-8로 변환하는 전체 변환 테이블은 배포 파일 conf/koi-win, conf/koi-utf, conf/win-utf에서 제공됩니다.
Syntax: charset_types mime-type ...;
Default: charset_types text/html text/xml text/plain text/vnd.wap.wml
application/javascript application/rss+xml;
Context: http, server, location
This directive appeared in version 0.7.9.
“text/html” 외에 지정된 MIME 유형을 포함한 응답에서 모듈 처리를 활성화합니다. 특수 값 “*”은 모든 MIME 유형과 일치합니다(0.8.29).
1.5.4버전까지 “application/javascript” 대신 “application/x-javascript”를 기본 MIME 유형으로 사용했습니다.
Syntax: override_charset on | off;
Default: override_charset off;
Context: http, server, location, if in location
프록시된 서버나 FastCGI/uwsgi/SCGI/gRPC 서버에서 응답을 수신했을 때, 해당 응답의 “Content-Type” 응답 헤더 필드에 이미 문자 세트가 있는 경우 변환을 수행할지 결정합니다. 변환을 활성화하는 경우, 수신된 응답에 지정된 문자 세트를 원본 문자 세트로 사용합니다.
참고로 응답을 하위 요청에서 수신한 경우, override_charset 명령 설정과 관계없이 언제나 해당 응답 문자 세트가 메인 요청 문자 세트로 변환됩니다.
Syntax: source_charset charset;
Default: —
Context: http, server, location, if in location
응답의 원본 문자 세트를 정의합니다. 이 문자 세트가 charset 명령에 지정된 문자 세트와 다른 경우, 변환을 실행합니다.