ngx_http_ssi_module
ngx_http_ssi_module 모듈은 통과하는 응답의 SSI(Server Side Includes) 명령을 처리하는 필터입니다. 현재, 지원되는 SSI 명령의 목록은 불완전합니다.
예제 구성
location / {
ssi on;
...
}
Directives
Syntax: ssi on | off;
Default: ssi off;
Context: http, server, location, if in location
응답의 SSI 명령의 처리를 활성화하거나 비활성화합니다.
Syntax: ssi_last_modified on | off;
Default: ssi_last_modified off;
Context: http, server, location
This directive appeared in version 1.5.1.
응답 캐싱을 촉진하기 위해 SSI를 처리하는 동안 원래 응답에서 “Last-Modified” 헤더 필드를 방지하도록 허용합니다.
기본적으로 헤더 필드는 응답의 콘텐츠가 처리 중에 수정될 때 제거되고 원래 응답과 독립적으로 변경된 동적으로 생성된 요소 또는 부분을 포함할 수 있습니다.
Syntax: ssi_min_file_chunk size;
Default: ssi_min_file_chunk 1k;
Context: http, server, location
디스크에 저장된 응답의 부분에 대한 최소 크기를 설정합니다. 이 크기부터 sendfile을 사용하여 해당 부분을 보내는 것이 의미가 있습니다.
Syntax: ssi_silent_errors on | off;
Default: ssi_silent_errors off;
Context: http, server, location
활성화되면 SSI 처리 중에 오류가 발생한 경우”[an error occurred while processing the directive]” 문자열의 출력을 억제합니다.
Syntax: ssi_types mime-type ...;
Default: ssi_types text/html;
Context: http, server, location
“text/html” 외에 지정된 MIME 형식이 있는 응답에서 SSI 명령의 처리를 활성화합니다. 특수 값 “*”는 모든 MIME 형식(0.8.29)과 일치합니다.
Syntax: ssi_value_length length;
Default: ssi_value_length 256;
Context: http, server, location
SSI 명령의 매개변수 값의 최대 길이를 설정합니다.
SSI 명령
SSI 명령에는 다음과 같은 일반 형식이 있습니다.
<!--# command parameter1=value1 parameter2=value2 ... -->
다음 명령이 지원됩니다.
block
include 명령의 스텁으로 사용할 수 있는 블록을 정의합니다. 블록에는 다른 SSI 명령이 포함될 수 있습니다. 명령에는 다음 매개변수가 있습니다.
name
블록 이름.
예:
<!--# block name="one" -->
stub
<!--# endblock -->
config
SSI 처리 중에 사용되는 몇 가지 매개변수를 설정합니다. 즉,
errmsg
SSI 처리 중에 오류가 발생하는 경우 출력되는 문자열. 기본적으로 다음 문자열이 출력됩니다.
[an error occurred while processing the directive]
timefmt
날짜 및 시간을 출력하는 데 사용되는 strftime() 함수에 전달되는 형식 문자열. 기본적으로 다음 형식이 사용됩니다.
"%A, %d-%b-%Y %H:%M:%S %Z"
“%s” 형식은 초 단위로 시간을 출력하는 데 적합합니다.
echo
변수의 값을 출력합니다. 명령에는 다음 매개변수가 있습니다.
var
변수 이름.
encoding
인코딩 방법. 가능한 값으로는 none, url 및 entity이 있습니다. 기본적으로 entity가 사용됩니다.
default
변수가 정의 해제된 경우 문자열이 출력되도록 설정하는 비표준 매개변수. 기본적으로 “(none)”이 출력됩니다.
<!--# echo var="name" default="no" -->
다음 시퀀스 명령을 대체합니다.
<!--# if expr="$name" --><!--# echo var="name" --><!--#
else -->no<!--# endif -->
if
조건부 포함을 수행합니다. 다음 명령이 지원됩니다.
<!--# if expr="..." -->
...
<!--# elif expr="..." -->
...
<!--# else -->
...
<!--# endif -->
현재 1개의 포함 수준만 지원됩니다. 명령에는 다음 매개변수가 있습니다.
expr
표현식. 표현식은 다음일 수 있습니다.
- 변수 존재 검사:
<!--# if expr="$name" -->
- 변수와 텍스트의 비교:
<!--# if expr="$name = text" -->
<!--# if expr="$name != text" -->
- 변수와 정규식의 비교:
<!--# if expr="$name = /text/" -->
<!--# if expr="$name != /text/" -->
텍스트에 변수가 포함되는 경우 해당 값은 대체됩니다. 정규식에는 변수를 통해 나중에 사용할 수 있는 위치 캡처 및 이름 지정된 캡처가 포함될 수 있습니다. 예를 들어 다음과 같습니다.
<!--# if expr="$name = /(.+)@(?P<domain>.+)/" -->
<!--# echo var="1" -->
<!--# echo var="domain" -->
<!--# endif -->
include
응답으로의 다른 요청의 결과를 포함합니다. 명령에는 다음 매개변수가 있습니다.
file
포함된 파일을 지정합니다. 예를 들어, 다음과 같습니다.
<!--# include file="footer.html" -->
virtual
포함된 요청을 지정합니다. 예를 들어, 다음과 같습니다.
<!--# include virtual="/remote/body.php?argument=value" -->
하나의 페이지에서 지정되고 프록시된 또는 동시에 실행되는 FastCGI/uwsgi/SCGI/gRPC 서버에 의해 처리되는 여러 요청. 순차적 처리를 원하는 경우 대기 매개변수를 사용해야 합니다.
stub
포함된 요청의 결과가 비어 있는 본문이거나 요청 처리 중에 오류가 발생하는 경우 콘텐츠가 출력될 블록의 이름을 지정하는 비표준 매개변수, 예:
<!--# block name="one" --> <!--# endblock -->
<!--# include virtual="/remote/body.php?argument=value" stub="one" -->
교체 블록 콘텐츠는 포함된 요청 컨텍스트에서 처리됩니다.
wait
SSI 처리를 계속하기 전에 요청이 전체 완료될 때까지 기다리도록 지시하는 비표준 매개변수, 예:
<!--# include virtual="/remote/body.php?argument=value" wait="yes" -->
set
지정된 변수로 성공적인 요청 처리 결과를 기록하도록 지시하는 비표준 매개변수, 예:
<!--# include virtual="/remote/body.php?argument=value" set="one" -->
응답의 최대 크기는 subrequest_output_buffer_size 명령(1.13.10)에 의해 설정됩니다.
location /remote/ {
subrequest_output_buffer_size 64k;
...
}
버전 1.13.10 이전에 ngx_http_proxy_module, ngx_http_memcached_module, ngx_http_fastcgi_module(1.5.6), ngx_http_uwsgi_module(1.5.6) 및 ngx_http_scgi_module(1.5.6) 모듈을 사용하여 얻어진 응답의 결과만 변수에 기록할 수 있습니다. 응답의 최대 크기는 proxy_buffer_size, memcached_buffer_size, fastcgi_buffer_size, uwsgi_buffer_size 및 scgi_buffer_size 명령을 사용하여 설정되었습니다.
set
변수의 값을 설정합니다. 명령에는 다음 매개변수가 있습니다.
var
변수 이름.
value
변수 값. 지정된 값에 변수가 포함된 경우 해당 값은 대체됩니다.
임베디드 변수
ngx_http_ssi_module 모듈은 2개의 포함된 변수를 지원합니다.
$date_local
로컬 시간대의 현재 시간. 형식은 imefmt 매개변수를 포함하는 config 명령으로 설정합니다.
$date_gmt
GMT의 현재 시간. 형식은 imefmt 매개변수를 포함하는 config 명령으로 설정합니다.