SERVICE 절
HTTP 요청을 처리할 내부 서버를 요청의 URI, EXT 기반으로 설정합니다.
설정 항목
다음은 SERVICE 절의 환경 설정 형식입니다.
"service": {
"uri": [
{
"name": string,
#"target_http_servers": [string], # ["*"]
"match": {
#"rewrite": string,
#"type": string, # "prefix"
"target": string,
#"redirect": string,
#"redirect_status": integer, # 302
#"enable_cache": boolean, # false
#"ext": [string], # []
#"goto_ext": boolean, # false
#"stop_if_no_ext": boolean # true
},
"destination": {
"type": string,
"target": string
},
#"access": string
}
]
"ext": [
{
"name": string,
#"target_http_servers": [string], # ["*"]
"match": {
#"type": string, # "exact"
"target": string,
#"enable_cache": boolean # false
},
"destination": {
"type": string,
"target": string
},
#"access": string
}
]
}
|
절과 설정 항목의 구성에 대한 기호나 내용에 대한 자세한 내용은 설정 항목 값의 형식 및 설정 방법을 참고합니다. |
uri
URI 절은 클라이언트 요구의 URI(Uniform Resource Identifier) 값에 따라 요청을 처리할 목적지(destination)를 구분할 수 있도록 설정합니다.
예를 들어 사용자가 http://www.tmax.co.kr/JSV/test를 호출한 경우 "/JSV/" URI를 JEUS로 설정하여 처리할 수 있습니다.
| 구분 | 설명 |
|---|---|
자료형 |
array(object) |
|
아래와 같은 요청이 있을 때는 <first>로 시작하는 URI로 설정해야 합니다. http://<hostname>:<port>/<first>/<second>/index.html |
uri/target_http_servers
특정 서버가 처리하도록 설정할 경우 해당 서버의 이름을 설정합니다. (예: "target_http_servers": "http1")
만약 특정 vhost가 처리하도록 설정할 경우에는 "서버의 이름.vhost 이름"으로 설정합니다. (예: "target_http_servers": "http1.vhost1")
| 구분 | 설명 |
|---|---|
자료형 |
array[string] |
범위 |
64개 이내[31자 이내] |
기본값 |
["*"] |
다음은 설정값에 대한 설명입니다.
| 설정값 | 설명 |
|---|---|
"*" |
모든 서버에 설정됩니다. |
uri/match/rewrite
uri/match/target을 어떤 값으로 변경할지 설정합니다.
| 구분 | 설명 |
|---|---|
자료형 |
string |
범위 |
255자 이내 |
|
/uri/match/type 이 regex일 때는 설정할수 없습니다. |
uri/match/type
URI에 설정된 패턴의 유형을 설정합니다. 패턴 유형에 따라 HTTP 요청 경로와 매치하는 방식이 달라집니다.
| 구분 | 설명 |
|---|---|
자료형 |
string |
범위 |
"prefix", "exact", "regex" |
기본값 |
"prefix" |
다음은 설정값에 대한 설명입니다.
| 설정값 | 설명 |
|---|---|
prefix |
uri/match/target에 설정된 패턴이 HTTP 요청 URL의 접두사(prefix)이면 매치합니다. |
exact |
uri/match/target에 설정된 패턴이 HTTP 요청 URL과 일치하면 매치합니다. |
regex |
HTTP 요청 URL이 uri/match/target에 설정된 regular expression 패턴을 만족하면 매치합니다. |
uri/match/target (필수 항목)
HTTP 요청 경로와 매치할 패턴을 설정합니다. 매치되면 해당 요청은 URI 절의 설정이 적용됩니다.
| 구분 | 설명 |
|---|---|
자료형 |
string |
범위 |
255자 이내 |
uri/match/redirect
지정된 URI 요청을 다른 URI로 매핑하도록 설정합니다.
URI 절에 설정된 redirect_status의 값에 따라 redirect에 설정된 값이 HTTP 응답의 Location 헤더 필드에 설정되어 사용자에게 전달됩니다. 만약 redirect_status의 값을 생락한 경우 기본값으로 "302 Found"가 사용됩니다.
| 구분 | 설명 |
|---|---|
자료형 |
string |
범위 |
255자 이내 |
uri/match/redirect_status
다른 URI로 리다이렉트 시 사용할 HTTP 상태 코드를 설정합니다.
| 구분 | 설명 |
|---|---|
자료형 |
integer |
범위 |
301 | 302 | 303 | 305 | 407 | 410 |
기본값 |
302 |
다음은 설정값에 대한 설명입니다.
| 설정값 | 별칭 | 설명 |
|---|---|---|
301 |
permanent |
"301 Moved Permanently"로 응답합니다. |
302 |
found |
"302 Found"로 응답합니다. |
303 |
seeother |
"303 See Other"로 응답합니다. |
305 |
useproxy |
"305 Use Proxy"로 응답합니다. |
307 |
temp |
"307 Temporary Redirect"로 응답합니다. |
410 |
gone |
"410 Gone"로 응답합니다. |
uri/match/ext
URI 매칭하는 경우 추가적으로 설정한 확장자까지 매칭합니다. 특정 경로 아래의 특정 확장자에 대해서만 URI 절을 적용할 경우 사용합니다.
| 구분 | 설명 |
|---|---|
자료형 |
array(string) |
기본값 |
[] |
uri/match/goto_ext
URI 매칭을 먼저하는 경우 EXT 매칭을 수행하도록 할지 여부를 설정합니다. EXT 매칭이 되면 해당 EXT 서비스가 선택되는 것이므로 앞서 매칭한 URI 설정은 적용되지 않음을 주의해야 합니다.
| 구분 | 설명 |
|---|---|
자료형 |
boolean |
기본값 |
false |
uri/match/stop_if_no_ext
goto_ext 설정 사용시, 매칭되는 EXT 가 없을 경우의 매칭을 중단하고 해당 URI 서비스를 사용할지 다음 URI 서비스를 탐색할지 결정합니다.
| 구분 | 설명 |
|---|---|
자료형 |
boolean |
기본값 |
true |
다음은 설정값에 대한 설명입니다.
| 설정값 | 설명 |
|---|---|
true |
매칭되는 EXT 설정 항목이 없을 경우 매칭을 중단합니다. 해당 URI 설정이 사용됩니다. |
false |
해당 URI 설정을 사용하지 않고 다음 URI 설정을 계속 탐색합니다. |
uri/destination/type (필수 항목)
목적지의 유형을 설정합니다.
| 구분 | 설명 |
|---|---|
자료형 |
string |
범위 |
"HTMLS" | "JEUS" | "REVERSE_PROXY" | "FCGI" |
uri/destination/target (필수 항목)
목적지의 대상을 설정합니다. 이때 DESTINATION 절에 설정된 name과 동일해야 합니다.
| 구분 | 설명 |
|---|---|
자료형 |
string |
범위 |
127자 이내 |
uri/match/access
요청의 메소드, 헤더 포함여부, 요청을 보낸 IP 등에 대해 요청 허용 여부를 설정합니다. 이때 설정값은 access/access_list/name에 설정된 이름과 일치해야 합니다.
| 구분 | 설명 |
|---|---|
자료형 |
string |
범위 |
255자 이내 |
ext
클라이언트가 요구한 파일의 확장자명에 따라 처리 담당 프로세스를 설정합니다.
| 구분 | 설명 |
|---|---|
자료형 |
array(object) |
|
WebtoB는 기본적인 모든 MIME-Type에 대한 처리 담당 프로세스가 설정되어 있으나, 추가적인 설정이 필요할 경우 해당 절에서 수정할 수 있습니다. |
ext/target_http_servers
특정 서버가 처리하도록 설정할 경우 해당 서버의 이름을 설정합니다. (예: "target_http_servers": "http1")
만약 특정 vhost가 처리하도록 설정할 경우에는 "서버의 이름.vhost 이름"으로 설정합니다. (예: "target_http_servers": "http1.vhost1")
| 구분 | 설명 |
|---|---|
자료형 |
array(string) |
범위 |
64개 이내(31자 이내) |
기본값 |
["*"] |
다음은 설정값에 대한 설명입니다.
| 설정값 | 설명 |
|---|---|
"*" |
모든 서버에 설정됩니다. |
ext/match/type
ext/match/target에 설정된 패턴의 유형을 설정합니다. 패턴 유형에 따라 HTTP 요청 경로와 매치하는 방식이 달라집니다.
| 구분 | 설명 |
|---|---|
자료형 |
string |
범위 |
"prefix", "exact", "regex" |
기본값 |
"exact" |
다음은 설정값에 대한 설명입니다.
| 설정값 | 설명 |
|---|---|
prefix |
ext/match/target에 설정된 패턴이 확장자의 접두사(prefix)이면 매치합니다. |
exact |
ext/match/target에 설정된 패턴이 확장자와 일치하면 매치합니다. |
regex |
확장자가 ext/match/target에 설정된 regular expression 패턴을 만족하면 매치합니다. |
ext/match/target (필수 항목)
HTTP 요청 경로의 확장자와 매치할 패턴을 설정합니다. 매치되면 해당 요청은 EXT 절의 설정이 적용됩니다.
| 구분 | 설명 |
|---|---|
자료형 |
string |
범위 |
127개 이내 |
ext/destination/type (필수 항목)
목적지의 유형을 설정합니다.
| 구분 | 설명 |
|---|---|
자료형 |
string |
범위 |
"HTMLS" | "JEUS" | "REVERSE_PROXY" | "FCGI" |
기본 동작
만약 들어온 요청이 SERVICE 절의 모든 설정에 대응하지 않는다면, WebtoB6는 해당 요청을 "#default_htmls"라는 이름의 기본 HTMLS로 라우팅합니다.
|
"#default_htmls" 설정에 대한 자세한 내용은 DESTINATION 절 설명의 기본 설정을 참고합니다. |
설정 예시
다음은 SERVICE 절을 설정한 예시입니다.
"service": {
"uri": [
{
"name": "static_uri",
"target_http_servers": [
"*"
],
"match": {
"type": "prefix",
"target": "/static",
"rewrite": "/"
},
"destination": {
"type": "HTMLS",
"target": "htmls1"
}
}
],
"ext": [
{
"name": "ext1",
"target_http_servers": [
"http1.vhost1"
],
"match": {
"type": "exact",
"target": "text/html"
},
"destination": {
"type": "HTMLS",
"target": "html1"
}
}
]
}