DESTINATION 절

요청을 전달하고 응답을 받는 서비스 수행 시 사용될 백엔드 서버를 설정합니다. 이때 'jeus', 'reverse proxy', 'htmls' 중 하나는 반드시 있어야 합니다.

설정 항목

다음은 DESTINATION 절의 환경 설정 형식입니다.

"destination": {
    #"jeus": [
        {
            "name": string,
            #"server_schedule": string,                                 # "RR"
            #"connection_schedule": string,                             # "RR"
            #"enable_flexible_sticky_session_routing": boolean,         # false
            #"enable_request_level_ping": boolean,                      # false
            #"request_level_ping_timeout": integer                      # 3 (0-INT_MAX)
            #"request_level_ping_retry_count": integer                  # 0 (0-INT_MAX)
            #"headers": [string],
            #"session_id_cookie_key": string,                           # "JSESSIONID"
            #"rewrite_cookie_domain": string,
            #"rewrite_cookie_path": {
                "from": string,
                "to": string
            },
            #"enable_cache": boolean,                                   # false
            #"cache_refresh": integer,                                  # 3600 (1-INT_MAX)
            #"max_queue_count": integer,                                # 0 (0-INT_MAX)
            #"max_queue_url": string,
            #"max_queue_status_code": integer,                          # 503
            #"queue_timeout": integer,                                  # 0 (0-INT_MAX)
            #"backup_server": string
        }
    ],
    #"reverse_proxy": {
        #"common_config": {                                             # COMMON
            #"headers": [string],
            #"compression": [string],
            #"compression_min_size": integer,                           # 0 (0-INT_MAX)
            #"rewrite_redirect": [
                {
                    "original_uri": string,
                    "redirect_path": string
                }
            ],
            #"rewrite_cookie_domain": string,
            #"rewrite_cookie_path": {
                "from": string,
                "to": string,
            },
            #"max_queue_count": integer,                                # 0 (0-INT_MAX)
            #"max_queue_url": string,
            #"max_queue_status_code": integer,                          # 503
            #"websocket_connections_max": integer,                      # 0 (0-INT_MAX)
            #"websocket_session_timeout": integer,                      # 0 (0-INT_MAX)
            #"set_host_header": string,
            #"queue_timeout": integer,                                  # 0 (0-INT_MAX)
            #"name_resolution_interval": integer,                       # 0 (0-INT_MAX)
            #"server_health_check": {
                #"retry_count": integer,                                # 3 (0-INT_MAX)
                #"failback_interval": integer,                          # 60 (0-INT_MAX)
                #"failure": [string],                                   # ["connection_timeout"]
                #"enable_name_resolution_on_fail": boolean              # true
            },
            #"rewrite_html_url": [
                {
                    "tag": string,
                    "attribute": [string],
                    "from": string,
                    "to": string
                }
            ],
            #"rewrite_html_max_size": integer                           # 10240 (1-INT_MAX)
        },
        "reverse_proxy_group": [
            {
                "name": string,
                "reverse_proxy_server": [
                    {
                        "name": string,
                        "address": string,
                        #"enable_proxy_ssl": boolean,                   # false
                        #"proxy_ssl_name": [string],
                        #"persistent_server_connections_min": integer,  # 0 (0-INT_MAX)
                        #"persistent_server_connections_max": integer,  # 0 (0-INT_MAX)
                        #"persistent_server_check_time": integer,       # 30 (0-INT_MAX)
                        #"persistent_server_check_url": string,
                        #"persistent_server_timeout": integer,          # 300 (0-INT_MAX)
                        #"enable_cache": boolean,                       # false
                        #"cache_refresh": integer,                      # 3600 (1-INT_MAX)
                        #"sticky_session_routing_id": string,
                        #"is_backup_server": boolean,                   # false
                        #"load_balancing_factor": integer,              # 1 (1-INT_MAX)
                        #"common_config": {...}                         # COMMON
                    }
                ],
                #"server_schedule": string,                             # "RR"
                #"sticky_session_routing": {
                    #"policy": string,                                  # "UseOriginalCookie"
                    #"session_id_cookie_key": string,                   # "JSESSIONID"
                    #"enable_flexible_sticky_session_routing": boolean  # false
                },
                #"common_config": {...}                                 # COMMON
            }
        ]
    },
    #"htmls":[
        {
            "name": string,
            #"headers": [string],
            #"compression": [string],
            #"compression_min_size": integer,                           # 0 (0-INT_MAX)
            #"enable_cache": boolean,                                   # false
            #"cache_refresh": integer,                                  # 3600 (1-INT_MAX)
            #"queue_timeout": integer,                                  # 0 (0-INT_MAX)
            #"enable_sendfile": boolean,                                # false
            #"sendfile_min_size": integer,                              # 0 (0-INT_MAX)
            #"enable_etag": boolean                                     # true
        }
    ]
}

절과 설정 항목의 구성에 대한 기호나 내용에 대한 자세한 내용은 설정 항목 값의 형식 및 설정 방법을 참고합니다.

jeus

WebtoB - JEUS 간 연동하여 WJP로 서비스를 수행할 경우 설정합니다.

구분 설명

자료형

array(object)

jeus/name (필수 항목)

JEUS의 이름을 설정합니다. 해당 이름은 wjp/wjp_servers/name에 설정된 이름과 일치해야 합니다.

구분 설명

자료형

string

범위

31자 이내

jeus/server_schedule

wjp/wjp_servers에 서버를 여러 개 설정했을 경우 요청을 처리할 서버의 지정 방법을 설정합니다.

구분 설명

자료형

string

범위

"RR"

기본값

"RR"

다음은 설정값에 대한 설명입니다.

설정값 설명

RR

Round Robin 방식으로 순차적으로 JEUS에 요청을 할당합니다.

jeus/connection_schedule

JEUS 서버에 여러 개의 커넥션(Connection)이 맺어져 있을 경우 요청을 처리할 커넥션의 지정 방법을 설정합니다.

구분 설명

자료형

string

범위

"RR"

기본값

"RR"

다음은 설정값에 대한 설명입니다.

설정값 설명

RR

Round Robin 방식으로 순차적으로 커넥션에 요청을 할당합니다.

jeus/enable_flexible_sticky_session_routing

세션 라우팅 시 유연하게 라우팅할지 여부를 설정합니다.

구분 설명

자료형

boolean

기본값

false

다음은 설정값에 대한 설명입니다.

설정값 설명

true

sticky_session_routing_id 기준으로 세션 라우팅 시 내부 서버의 persistent_server_connections_max 모두 RUN 상태이면 큐잉(Queuing)하지 않고 다른 sticky_session_routing_id를 가진 내부 서버의 커넥션으로 라우팅합니다.

false

기본으로 스티키 세션 라우팅(Sticky Session Routing)이 됩니다. 이는 동일한 sticky_session_routing_id를 가진 내부 서버의 커넥션으로만 라우팅하고, 해당 내부 서버의 persistent_server_connections_max가 모두 RUN 상태이면 큐잉한다는 의미입니다.

유연한(Flexible) 라우팅을 하는 경우 동일한 JSESSIONID를 가진 다른 클라이언트의 요청이 각각 다른 서버로 라우팅될 수 있으므로 주의합니다. (기본값 사용 권장)

jeus/enable_request_level_ping

요청을 포워딩하기 전에 해당 서버에 PING을 보내는지 여부를 설정합니다. 여러 JEUS 서버가 연결된 경우 OOM(Out Of Memory)등으로 요청을 보내도 응답하기 어려운 서버가 발생할 수 있는 경우에 사용하면 유용합니다.

구분 설명

자료형

boolean

기본값

false

다음은 설정값에 대한 설명입니다.

설정값 설명

true

JEUS 서버로 포워딩하는 모든 요청에 대해 PING을 보내고 이에 대한 응답을 받은 경우에만 요청을 포워딩합니다.

false

JEUS 서버로 포워딩하는 모든 요청에 대해 PING을 보내지 않고 요청을 바로 포워딩합니다.

모든 요청에 대해 PING을 보내고 응답을 받아야 하므로 성능 저하가 발생할 수 있습니다. (기본값 사용 권장)

jeus/request_level_ping_timeout

PING을 보내고 이에 대한 응답을 받기까지 기다리는 시간을 설정합니다. 해당 시간 안에 응답을 받지 못하면 해당 연결을 끊고 다른 JEUS 서버를 다시 스케줄링하여 PING을 보냅니다.

구분 설명

자료형

integer

단위

범위

0 ~ INT_MAX

기본값

3

jeus/request_level_ping_retry_count

JEUS 서버 내에 모든 Jengine에 대해 PING을 보내고 실패한 경우 재시도하는 횟수를 설정합니다.

구분 설명

자료형

integer

범위

0 ~ INT_MAX

기본값

0

jeus/headers

적용할 HEADERS 절 이름을 설정합니다.

구분 설명

자료형

array(string)

범위

15개 이내(255자 이내)

세션 라우팅으로 사용되는 HTTP 쿠키의 Key 이름을 설정합니다.

구분 설명

자료형

string

범위

255자 이내

기본값

"JSESSIONID"

내부 서버 응답의 쿠키 헤더 필드 값의 "domain=" 값을 수정합니다. "domain="에 지정된 domain string이 RewriteCookieDomain에 지정된 string과 일치할 경우 "domain=" 값을 사용자 요청의 domain으로 교체합니다.

구분 설명

자료형

string

범위

255자 이내

기본값

"JSESSIONID"

아래와 같이 설정하면 WebtoB의 domain이 webtob인 경우 원본 응답의 쿠키인 "jsessionid=abc, domain=internal.server.com"은 "jsessionid=abc, domain=webtob"로 변경됩니다.

"rewrite_cookie_domain": "internal.server.com"

내부 서버 응답의 쿠키 헤더 필드 값의 "path=" 값을 수정합니다.

구분 설명

자료형

object

"path=" 값에서 수정할 string을 설정합니다.

구분 설명

자료형

string

범위

255자 이내

"path=" 값으로 수정될 string을 설정합니다.

구분 설명

자료형

string

범위

255자 이내

jeus/enable_cache

콘텐츠의 캐시 유무를 설정합니다.

구분 설명

자료형

boolean

기본값

false

jeus/cache_refresh

JEUS로부터 받은 응답을 캐시하게 되는 경우 캐시되는 응답의 유효 시간을 계산하기 위한 값을 설정합니다.

클라이언트의 요청에 대해 WebtoB가 캐시된 내용에서 응답할 때는 캐시된 내용이 유효한지를 판단합니다. 이때 유효 여부는 설정된 값(유효 시간)을 기준으로 판단합니다.

구분 설명

자료형

integer

단위

범위

1 ~ INT_MAX

기본값

3600

설정 우선순위

설정할 때 적용되는 우선순위는 다음과 같습니다.

  1. Cache-Control:max-age

    첫 번째로 캐시될 응답 헤더에 Cache-Control:max-age 값이 있는 경우 max-age(초) 동안 유효합니다.

  2. Expires

    두 번째로 캐시될 응답 헤더에 Expires 값이 있으면 Expires(시간)까지 유효합니다.

  3. cache_refresh

    세 번째로 응답 헤더에 'Cache-Control:max-age', 'Expires' 값이 없는 경우 JEUS로부터 받은 응답이 캐시된 후 캐시된 내용은 cache_refresh(초) 동안 유효합니다.

jeus/max_queue_count

클라이언트의 요청이 과도하게 증가하여 정상적인 서비스 처리가 어려울 경우 계속되는 서비스 요청을 무시할 필요가 있습니다.

큐에 쌓인 클라이언트의 요구 수가 어느 정도 이상이 되면 새로 도착한 요구는 큐에 쌓이지 않고 클라이언트에 즉시 에러로 응답합니다.

구분 설명

자료형

integer

범위

0 ~ INT_MAX

기본값

0

jeus/max_queue_url

서버 큐가 다 찼을 경우 대신 서비스할 페이지를 설정합니다.

구분 설명

자료형

string

범위

255자 이내

jeus/max_queue_status_code

서버 큐가 다 찼을 경우 응답할 상태 코드를 설정합니다.

구분 설명

자료형

string

범위

301 | 302 | 303 | 307 | 308 | 410 | 503

기본값

503

jeus/queue_timeout

서버 큐에 대기하고 있는 사용자 요청의 타임아웃을 설정합니다.

사용자 요청이 많아 해당 요청을 처리할 서버 프로세스가 없을 경우 해당 요청은 서버 큐에서 요청을 처리할 서버 프로세스가 생길 때까지 기다립니다.

구분 설명

자료형

integer

범위

0 ~ INT_MAX

기본값

0

다음은 설정값에 대한 설명입니다.

설정값 설명

0

서버 큐에서 대기하는 시간을 제한하지 않습니다.

양의 정수값

설정된 시간 이상 대기하는 요청은 큐에서 제거되며, "503 Service Unavailable"로 응답합니다.

다음은 max_queue 설정 예시입니다.

  ...
  "destination": {
    "jeus": {
      "max_queue_count": 3,
      "max_queue_url":"/jsvtest/common/test.html",
      "max_queue_status_code":302,
      "queue_timeout":100
    }
  },
  ...

위와 같이 설정하면 JEUS 연결이 2개일 때 10개의 호출을 한다면 2개 페이지 호출, 3개(queue) 페이지 호출, 5개 max_queue_url 호출로 응답합니다.

jeus/backup_server

서버들이 모두 준비 상태가 아닐 경우 백업 용도로 사용할 서버를 설정합니다.

구분 설명

자료형

string

범위

31자 이내

reverse_proxy

HTTP 프록시 일종으로 내부 서버로 요청을 전달할 때 설정하며, WAS 연동에 사용할 수 있습니다.

구분 설명

자료형

object

reverse_proxy/common_config

역방향 프록시의 공통적인 설정입니다. 상위 항목에 설정하면 하위 항목에는 설정하지 않아도 상위 항목의 설정이 반영됩니다.

구분 설명

자료형

object

설정 우선순위

설정할 때 적용되는 우선순위는 다음과 같습니다.

  1. reverse_proxy_server

  2. reverse_proxy_group

  3. reverse_proxy

reverse_proxy/common_config/headers

적용할 HEADERS 절 이름을 설정합니다.

구분 설명

자료형

array(string)

범위

15개 이내(255자 이내)

reverse_proxy/common_config/compression

응답을 압축할 대상을 설정합니다. 압축할 MIME-Type을 설정하며, 응답의 Content-Type이 사용됩니다. 해당되는 응답은 클라이언트로 전송되기 전에 GZIP을 사용해서 압축됩니다.

구분 설명

자료형

array(string)

범위

32개 이내(255자 이내)

압축 기능을 사용할 경우 네트워크 트래픽을 줄일 수 있지만, 서버의 성능은 저하될 수 있습니다.

압축률이 낮은 파일(zip 같은 압축 파일이나 jpeg 같은 압축 이미지 등)을 압축할 경우 서버에 부하만 주기 때문에 해당 MIME-Type이 압축 대상이 되지 않도록 주의합니다.

압축 기능은 HTTP 요청 헤더 중 Accept-Encoding에 GZIP이나 deflate로 지정된 요청에 대해서만 적용됩니다.

reverse_proxy/common_config/compression_min_size

압축 설정을 통해 응답을 압축할 때 응답의 최소 크기를 설정합니다.

Content-Length 응답 헤더의 값이 설정된 값보다 크면 응답을 압축합니다. 단, chunked 응답인 경우 응답의 크기를 알기 어려우므로 적용되지 않습니다.

구분 설명

자료형

integer

범위

0 ~ INT_MAX

기본값

0

reverse_proxy/common_config/rewrite_redirect

내부 서버 응답에 "Location", "Content-Location" 헤더가 있는 경우 값을 수정합니다. 해당 필드가 "original_uri"로 시작하는 경우 "original_uri"와 일치하는 부분을 "redirect_path"로 교체합니다.

구분 설명

자료형

array(object)

범위

16개 이내(original_uri, redirect_path 각각 255자 이내)

아래와 같이 설정하면 원본 응답의 Location이 "http://internal.server.com:80/docs_kr/abc.html"인 경우 "/internal_kr/abc.html"로 변경됩니다.

"rewrite_redirect": [
    {
        "original_uri": "http://internal.server.com:80/docs/",
        "redirect_path": "/internal/"
    },
    {
        "original_uri": "http://internal.server.com:80/docs_kr",
        "redirect_path": "/internal_kr/"
    },
    {
        "original_uri": "http://internal.server.com:80/docs_ch/",
        "redirect_path": "/internal_ch/"
    }
]

내부 서버 응답의 쿠키 헤더 필드 값의 "domain=" 값을 수정합니다. "domain="에 지정된 domain string이 rewrite_cookie_domain에 지정된 string과 일치할 경우 "domain=" 값을 사용자 요청의 domain으로 교체합니다.

구분 설명

자료형

string

범위

255자 이내

기본값

0

아래와 같이 설정하면 WebtoB의 domain이 webtob인 경우 원본 응답의 쿠키인 "jsessionid=abc, domain=internal.server.com"은 "jsessionid=abc, domain=webtob"로 변경됩니다.

"rewrite_cookie_domain": "internal.server.com"

내부 서버 응답의 쿠키 헤더 필드 값의 "path=" 값을 수정합니다.

구분 설명

자료형

object

아래와 같이 설정하면 원본 응답의 쿠키의 "jsessionid=abc, path=/jeus/application"이 "jsessionid=abc, path=/jeus_proxy/application"으로 변경됩니다.

"rewrite_cookie_path": {
    "from": "jeus",
    "to": "/jeus_proxy"
}

"path=" 값에서 수정할 string을 설정합니다.

구분 설명

자료형

string

범위

255자 이내

"path=" 값으로 수정될 string을 설정합니다.

구분 설명

자료형

string

범위

255자 이내

reverse_proxy/common_config/max_queue_count

클라이언트의 요청이 과도하게 증가하여 정상적인 서비스 처리가 어려울 경우 계속되는 서비스 요청을 무시할 필요가 있습니다.

큐에 쌓인 클라이언트의 요구 수가 어느 정도 이상이 되면 새로 도착한 요구는 큐에 쌓이지 않고 클라이언트에 즉시 에러로 응답합니다.

구분 설명

자료형

integer

범위

0 ~ INT_MAX

기본값

0

reverse_proxy/common_config/max_queue_url

서버 큐가 다 찼을 경우 대신 서비스할 페이지를 설정합니다.

구분 설명

자료형

string

범위

255자 이내

reverse_proxy/common_config/max_queue_status_code

서버 큐가 다 찼을 경우 응답할 상태 코드를 설정합니다.

구분 설명

자료형

integer

범위

301 | 302 | 303 | 307 | 308 | 410 | 503

기본값

503

reverse_proxy/common_config/websocket_connections_max

HTTP 커넥션에서 웹 소켓 커넥션으로 업그레이드 된 경우 해당 커넥션 수에 대한 제한을 설정합니다.

구분 설명

자료형

integer

범위

0 ~ INT_MAX

기본값

0

다음은 설정값에 대한 설명입니다.

설정값 설명

0

웹 소켓 커넥션 수를 제한하지 않습니다.

reverse_proxy/common_config/websocket_session_timeout

웹 소켓 커넥션에 대한 타임아웃을 설정합니다.

구분 설명

자료형

integer

범위

0 ~ INT_MAX

기본값

0

다음은 설정값에 대한 설명입니다.

설정값 설명

0

타임아웃을 체크하지 않습니다.

내부 서버의 웹 소켓 세션에 대한 타임아웃 설정과 맞춰서 설정할 것을 권장합니다.

reverse_proxy/common_config/set_host_header

역방향 프록시를 사용하여 내부 서버로 요청을 포워딩할 때 호스트 헤더의 값을 설정합니다.

설정하지 않으면 호스트 헤더의 값은 ServerAddress에 설정한 값이 설정되고, "$BypassHostHeader"로 설정하면 클라이언트가 보낸 호스트 헤더의 값을 그대로 사용합니다.

구분 설명

자료형

string

범위

255자 이내

기본값

0

reverse_proxy/common_config/queue_timeout

서버 큐에 대기하고 있는 사용자 요청의 타임아웃을 설정합니다.

사용자 요청이 많아 해당 요청을 처리할 서버 프로세스가 없을 경우 해당 요청은 서버 큐에서 요청을 처리할 서버 프로세스가 생길 때까지 기다립니다.

구분 설명

자료형

integer

범위

0 ~ INT_MAX

기본값

0

다음은 설정값에 대한 설명입니다.

설정값 설명

0

서버 큐에서 대기하는 시간을 제한하지 않습니다.

양의 정수값

설정된 시간 이상 대기하는 요청은 큐에서 제거되며, "503 Service Unavailable"로 응답합니다.

reverse_proxy/common_config/name_resolution_interval

Hostname Resolution을 수행할 주기를 설정합니다.

구분 설명

자료형

integer

범위

0 ~ INT_MAX

기본값

0

다음은 설정값에 대한 설명입니다.

설정값 설명

0

운영체제의 TTL(Time-To-Live) 설정을 따릅니다.

reverse_proxy/common_config/server_health_check

역방향 프록시 그룹의 헬스 체크 정보를 설정합니다.

구분 설명

자료형

object

다음은 server_health_check 사용 예시입니다.

  "destination": {
    "reverse_proxy ": {
      "common_config": {
        "server_health_check":{
	        "retry_count":4,
	        "failback_interval":5,
	        "failure":["connection_timeout"],
	        "enable_name_resolution_on_fail":false
	      }
      },

reverse_proxy/common_config/server_health_check/retry_count

Failover를 판단할 재시도 횟수를 설정합니다.

구분 설명

자료형

integer

범위

0 ~ INT_MAX

기본값

3

reverse_proxy/common_config/server_health_check/failback_interval

Failover 이후 Failback 시도를 위해 커넥션을 시도할 헬스 체크 시간을 설정합니다.

구분 설명

자료형

integer

범위

0 ~ INT_MAX

기본값

60

다음은 설정값에 대한 설명입니다.

설정값 설명

0

Failover 및 Failback을 수행하지 않습니다.

reverse_proxy/common_config/server_health_check/failure

연결 실패를 판단할 기준을 설정합니다.

구분 설명

자료형

array(string)

범위

1~3600(초)

기본값

5(초)

reverse_proxy/common_config/server_health_check/enable_name_resolution_on_fail

Failure 판단 시 Hostname Resolution을 새로 시도할 지 여부를 설정합니다.

구분 설명

자료형

boolean

기본값

true

reverse_proxy/common_config/rewrite_html_url

HTML 페이지 응답 본문에 포함된 URL을 변경할 때 사용합니다. URL이 호스트를 포함할 경우 호스트는 요청에 사용된 WebtoB 서버 주소로 교체됩니다.

구분 설명

자료형

array(object)

범위

64개 이내

다음은 img tag의 src, longdesc, usemap attribute에 대해 http://test2:80으로 되어 있는 URL을 /proxy/로 변경하는 예시입니다.

"rewrite_html_url": [
    {
        "tag": "img",
        "attribute": ["src", "longdesc"],
        "from": "http://test2:80",
        "to": "/proxy/"
    }
]

reverse_proxy/common_config/rewrite_html_url/tag (필수 항목)

태그 이름을 설정합니다.

구분 설명

자료형

string

범위

255자 이내

reverse_proxy/common_config/rewrite_html_url/attribute (필수 항목)

속성 이름을 설정합니다.

구분 설명

자료형

array(string)

범위

64개 이내(255자 이내)

reverse_proxy/common_config/rewrite_html_url/from (필수 항목)

URL에서 수정할 string을 설정합니다.

구분 설명

자료형

string

범위

255자 이내

reverse_proxy/common_config/rewrite_html_url/to (필수 항목)

URL로 수정될 string을 설정합니다.

구분 설명

자료형

string

범위

255자 이내

reverse_proxy/common_config/rewrite_html_max_size

응답이 HTML 페이지인 경우(Content-Type: text/html) 페이지 내부의 특정 태그 값들을 수정할 수 있는데, 이때 사용되는 내부 버퍼의 최대 크기를 설정합니다. 만약 응답이 설정된 값보다 크면, 수정되지 않은 원본 응답이 클라이언트로 전송됩니다.

구분 설명

자료형

integer

범위

1 ~ INT_MAX

기본값

10240

reverse_proxy/reverse_proxy_group (필수 항목)

reverse_proxy 설정을 그룹으로 관리하며, 다중 서버를 구성할 수 있습니다.

reverse_proxy(내부 서버)를 여러 개 설정하여 그룹으로 묶어 로드 밸런싱 및 스티키 세션 라우팅(Sticky Session Routing)을 할 수 있으며, WAS 연동에 사용할 수 있습니다.

구분 설명

자료형

array(object)

reverse_proxy/reverse_proxy_group/name (필수 항목)

reverse_proxy_group 이름을 설정합니다.

구분 설명

자료형

string

범위

31자 이내

reverse_proxy/reverse_proxy_group/reverse_proxy_server (필수 항목)

하나의 reverse_proxy_group에서 ip:port 별로 각각 설정을 다르게 관리할 수 있습니다.

구분 설명

자료형

array(object)

범위

최대 32개 이내

reverse_proxy/reverse_proxy_group/reverse_proxy_server/name (필수 항목)

역방향 프록시 서버 이름을 설정합니다.

구분 설명

자료형

string

범위

31자 이내

reverse_proxy/reverse_proxy_group/reverse_proxy_server/address (필수 항목)

요청이 전달되는 내부 서버 주소를 설정합니다.

구분 설명

자료형

string

범위

255자 이내

reverse_proxy/reverse_proxy_group/reverse_proxy_server/enable_proxy_ssl

내부 서버와 SSL/TLS 프로토콜을 사용하여 연결할지 여부를 설정합니다. 이때 proxy_ssl_name 설정으로 적용할 PROXY_SSL 절 항목을 지정할 수 있습니다.

구분 설명

자료형

boolean

기본값

false

reverse_proxy/reverse_proxy_group/reverse_proxy_server/proxy_ssl_name

사용할 ssl/proxy_ssl_configs 절의 이름을 설정합니다. 단, enable_proxy_ssl을 'true’로 설정하는 경우 적용됩니다.

구분 설명

자료형

array(string)

범위

100개 이내(31자 이내)

다음은 proxy_ssl_name 사용 예시입니다.

  "destination": {
    "reverse_proxy":{
      "reverse_proxy_server":[
        {
          "address":"internal.server.com:80",
          "name":"rproxy1",
          "enable_proxy_ssl": true,
          "proxy_ssl_name":["ssl1"]
        }
      ]
    }
  }

reverse_proxy/reverse_proxy_group/reverse_proxy_server/persistent_server_connections_min

요청 처리 후 내부 서버와의 커넥션을 지속적으로 유지하고자 하는 경우 최소 개수를 설정합니다.

신규 요청이 들어오면 내부 서버와의 커넥션이 새로 맺어지고, 내부 서버가 커넥션을 끊지 않는 이상 해당 커넥션을 지속적으로 유지하며 이후 요청에 대하여 이 커넥션을 재사용합니다.

구분 설명

자료형

integer

범위

0 ~ INT_MAX

기본값

0

reverse_proxy/reverse_proxy_group/reverse_proxy_server/persistent_server_connections_max

요청 처리 후 내부 서버와의 커넥션을 지속적으로 유지하고자 하는 경우 최대 개수를 설정합니다.

재사용 가능한 커넥션이 모두 다른 요청을 처리 중이라면 내부 서버와의 커넥션을 새로 맺어서 추가하며, 이미 최대 개수가 재사용 중이라면 요청은 큐잉된다.

구분 설명

자료형

integer

범위

0 ~ INT_MAX

기본값

0

reverse_proxy/reverse_proxy_group/reverse_proxy_server/persistent_server_check_url

내부 서버와의 커넥션을 지속적으로 유지하기 위해 내부적으로 HTTP HEAD 요청을 PING 메시지로 사용합니다.

구분 설명

자료형

string

범위

255자 이내

기본값

"/"

HTTP 요청을 내부 서버로 보내 HTTP 응답을 받아 이를 PONG 메시지로 확인하고 커넥션을 지속적으로 유지합니다. 200 응답이 아닌 경우 커넥션은 지속적으로 유지되지 않으며 이를 위해 내부 서버의 PING 요청에 대해 응답할 수 있는 애플리케이션을 만들어야 합니다.

reverse_proxy/reverse_proxy_group/reverse_proxy_server/persistent_server_check_time

내부 서버와의 커넥션을 체크하는 시간을 설정하며 내부 서버와의 커넥션을 확인 및 지속적으로 유지하는 데 사용됩니다.

내부 서버와의 커넥션을 지속적으로 유지하기 위해서는 내부 서버의 keepalive_timeout보다 작게 설정합니다. 준비 상태의 커넥션에 대하여 한 번의 PING 메시지를 보내고 persistent_server_check_time이 지나도록 응답이 오지 않으면 해당 커넥션은 이상이 발생했다고 판단하여 커넥션을 끊습니다.

구분 설명

자료형

integer

단위

범위

0 ~ INT_MAX

기본값

30

다음은 설정값에 대한 설명입니다.

설정값 설명

0

PING 메시지를 보내지 않습니다. 이 경우 내부 서버의 keepalive_timeout만큼만 커넥션을 지속합니다.

reverse_proxy/reverse_proxy_group/reverse_proxy_server/persistent_server_timeout

내부 서버와의 커넥션이 persistent_server_connections_min보다 많을 경우 준비 상태가 지속되고 있는 커넥션에 대한 타임아웃을 설정합니다.

구분 설명

자료형

integer

단위

범위

0 ~ INT_MAX

기본값

300

다음은 설정값에 대한 설명입니다.

설정값 설명

0

유휴(Idle) 커넥션에 대한 타임아웃을 체크하지 않습니다.

다음은 persistent_server 사용 예시입니다.

  "destination": {
    "reverse_proxy":{
      "reverse_proxy_group":[
        {
          "name": "rproxyg1",
          ...
          "persistent_server_connections_min":10,
          "persistent_server_connections_max":15,
          "persistent_server_check_time": 25,
          "persistent_server_check_url":"/jsvtest/common/test.html",
          "persistent_server_timeout":3000
        }
      ]
    }
  }

reverse_proxy/reverse_proxy_group/reverse_proxy_server/enable_cache

콘텐츠의 캐시 유무를 설정합니다.

구분 설명

자료형

boolean

기본값

false

reverse_proxy/reverse_proxy_group/reverse_proxy_server/cache_refresh

역방향 프록시로 처리된 응답을 캐시하게 되는 경우 캐시되는 응답의 유효 시간을 계산하기 위한 값을 설정합니다.

클라이언트의 요청에 대해 WebtoB가 캐시된 내용에서 응답할 때는 캐시된 내용이 유효한지를 판단합니다. 이때 유효 여부는 설정된 값(유효 시간)을 기준으로 판단합니다.

구분 설명

자료형

integer

단위

범위

1 ~ INT_MAX

기본값

3600

설정 우선순위

설정할 때 적용되는 우선순위는 다음과 같습니다.

  1. Cache-Control:max-age

    첫 번째로 캐시될 응답 헤더에 Cache-Control:max-age 값이 있는 경우 max-age(초) 동안 유효합니다.

  2. Expires

    두 번째로 캐시될 응답 헤더에 Expires 값이 있으면 Expires(시간)까지 유효합니다.

  3. cache_refresh

    세 번째로 응답 헤더에 'Cache-Control:max-age', 'Expires' 값이 없는 경우 JEUS로부터 받은 응답이 캐시된 후 캐시된 내용은 cache_refresh(초) 동안 유효합니다.

reverse_proxy/reverse_proxy_group/reverse_proxy_server/sticky_session_routing_id

특정 내부 서버(WAS)를 연동하고, 스티키 세션 라우팅(Sticky Session Routing)을 사용할 경우 설정합니다.

내부 서버(WAS)에서 Set-Cookie 응답 헤더에 Sticky Session id(JSESSIONID)로 넣어주는 값의 엔진명을 사용합니다. 예를 들어 Set-Cookie 응답 헤더의 "JSESSIONID" 값이 "Pl1xfBkEVbUu2cj20CUNlHJoWLmU.xxx_servlet_engine1"이라면 점(dot)으로 구분하여 이후 값인 "xxx_servlet_engine1"을 입력합니다.

구분 설명

자료형

string

범위

255자 이내

reverse_proxy/reverse_proxy_group/reverse_proxy_server/is_backup_server

다른 역방향 프록시 서버들이 모두 준비 상태가 아닐 경우 백업 용도로 사용할 서버인지를 설정합니다.

구분 설명

자료형

boolean

기본값

false

reverse_proxy/reverse_proxy_group/reverse_proxy_server/load_balancing_factor

역방향 프록시 그룹에서 해당 역방향 프록시 서버에 요청을 분배할 비율을 설정합니다.

이때 "(역방향 프록시 서버의 load_balancing_factor 설정 값) / (그룹내 모든 역방향 프록시 서버의 load_balancing_factor 설정 값의 합)" 비율로 요청이 분배됩니다.

구분 설명

자료형

integer

범위

1 ~ INT_MAX

기본값

1

reverse_proxy/reverse_proxy_group/reverse_proxy_server/common_config

역방향 프록시의 공통적인 설정으로 상위 항목에 설정하면 하위 항목에는 설정하지 않아도 상위 항목의 설정이 반영됩니다.

구분 설명

자료형

object

설정 우선순위

설정할 때 적용되는 우선순위는 다음과 같습니다.

  1. reverse_proxy_server

  2. reverse_proxy_group

  3. reverse_proxy

reverse_proxy/reverse_proxy_group/server_schedule

역방향 프록시를 여러 개 설정하였을 경우 요청을 처리할 역방향 프록시의 지정 방법을 설정합니다.

구분 설명

자료형

string

범위

"RR"

기본값

"RR"

다음은 설정값에 대한 설명입니다.

설정값 설명

RR

Round Robin 방식으로 순차적으로 역방향 프록시에 요청을 할당합니다.

reverse_proxy/reverse_proxy_group/sticky_session_routing

세션 라우팅과 관련된 설정입니다.

구분 설명

자료형

object

reverse_proxy/reverse_proxy_group/sticky_session_routing/policy

세션 라우팅 정책을 설정합니다.

구분 설명

자료형

string

범위

"AddNewCookie" | "ModifyOriginalCookie" | "UseOriginalCookie"

기본값

"UseOriginalCookie"

세션 라우팅으로 사용되는 HTTP 쿠키의 Key 이름을 설정합니다.

구분 설명

자료형

string

기본값

"JSESSIONID"

reverse_proxy/reverse_proxy_group/sticky_session_routing/enable_flexible_sticky_session_routing

세션 라우팅 시 유연하게 라우팅할지 여부를 설정합니다.

구분 설명

자료형

boolean

기본값

false

다음은 설정값에 대한 설명입니다.

설정값 설명

true

sticky_session_routing_id를 기준으로 세션 라우팅할 때 내부 서버의 persistent_server_connections_max가 모두 RUN 상태이면 큐잉(Queuing)하지 않고 다른 sticky_session_routing_id를 가진 내부 서버의 커넥션으로 라우팅합니다.

false

기본으로 스티키 세션 라우팅(Sticky Session Routing)이 됩니다. 이는 동일한 sticky_session_routing_id를 가진 내부 서버의 커넥션으로만 라우팅하고, 해당 내부 서버의 persistent_server_connections_max가 모두 RUN 상태이면 큐잉한다는 의미입니다.

유연한(Flexible) 라우팅을 하는 경우 동일한 JSESSIONID를 가진 다른 클라이언트의 요청이 각각 다른 서버로 라우팅될 수 있으므로 주의합니다. (기본값 사용 권장)

reverse_proxy/reverse_proxy_group/common_config

역방향 프록시의 공통적인 설정으로 상위 항목에 설정하면 하위 항목에는 설정하지 않아도 상위 항목의 설정이 반영됩니다.

구분 설명

자료형

object

설정 우선순위

설정할 때 적용되는 우선순위는 다음과 같습니다.

  1. reverse_proxy_server

  2. reverse_proxy_group

  3. reverse_proxy

htmls

정적 파일 요청을 처리할 경우 설정합니다. 이때 HTTP 메소드는 "GET", "POST", "HEAD"를 지원하며, 다른 메소드에 대해서는 "405 Method Not Allowed"로 응답합니다.

구분 설명

자료형

array(object)

htmls/name(필수 항목)

htmls의 이름을 설정합니다.

구분 설명

자료형

string

범위

31자 이내

htmls/headers

적용할 HEADERS 절 이름을 설정합니다.

구분 설명

자료형

array(string)

범위

15개 이내(255자 이내)

htmls/compression

정적 파일에 대한 응답에 대해 압축할 대상을 설정합니다. 압축할 MIME-Type을 설정하며, 응답의 Content-Type이 사용됩니다. 해당되는 응답은 클라이언트로 전송되기 전에 GZIP을 사용해서 압축됩니다.

구분 설명

자료형

array(string)

범위

32개 이내(255자 이내)

압축 기능을 사용할 경우 네트워크 트래픽을 줄일 수 있지만, 서버의 성능은 저하될 수 있습니다.

압축률이 낮은 파일(zip 같은 압축 파일이나 jpeg 같은 압축 이미지 등)을 압축할 경우 서버에 부하만 주기 때문에 해당 MIME-Type이 압축 대상이 되지 않도록 주의합니다.

압축 기능은 HTTP 요청 헤더 중 Accept-Encoding에 GZIP이나 deflate로 지정된 요청에 대해서만 적용됩니다.

htmls/compression_min_size

압축 설정을 통해 응답을 압축할 때 응답의 최소 크기를 설정합니다. 요청한 파일의 크기가 설정된 값보다 크면 응답을 압축합니다.

구분 설명

자료형

integer

단위

bytes

범위

0 ~ INT_MAX

기본값

0

htmls/enable_cache

콘텐츠의 캐시 유무를 설정합니다.

구분 설명

자료형

boolean

기본값

false

htmls/cache_refresh

캐시된 응답 중 "Content-Type"이 "text/html"인 응답에 대한 유효 시간을 설정합니다. 즉, "text/html" 응답은 캐시된 후 설정된 시간(초) 동안만 유효합니다.

구분 설명

자료형

integer

단위

범위

1 ~ INT_MAX

기본값

3600

Conditional-GET 요청은 캐시된 응답의 변경 여부를 체크합니다. 응답이 변경되면 캐시된 응답은 삭제 후 변경된 응답으로 갱신됩니다.

htmls/queue_timeout

사용자 요청이 많아 해당 요청을 처리할 서버 프로세스가 없을 경우 해당 요청은 서버 큐에서 요청을 처리할 서버 프로세스가 생길 때까지 기다립니다.

구분 설명

자료형

integer

단위

범위

1 ~ INT_MAX

기본값

0

다음은 설정값에 대한 설명입니다.

설정값 설명

0

서버 큐에서 대기하는 시간을 제한하지 않습니다.

양의 정수값

설정된 시간 이상 대기하는 요청은 큐에서 제거되며, "503 Service Unavailable"로 응답합니다.

htmls/enable_sendfile

sendfile 기능의 사용 여부를 설정합니다.

구분 설명

자료형

boolean

기본값

false

htmls/sendfile_min_size

요청한 파일의 크기가 설정된 값보다 크면 sendfile을 사용합니다.

구분 설명

자료형

integer

단위

bytes

범위

0 ~ INT_MAX

기본값

8192

htmls/enable_etag

정적 파일 처리 중 ETag의 사용 여부를 설정합니다.

구분 설명

자료형

boolean

기본값

true

다음은 설정값에 대한 설명입니다.

설정값 설명

false

WebtoB는 클라이언트로 전달되는 응답에 ETag를 추가하지 않고, 클라이언트의 요청에 포함된 ETag는 무시합니다.

설정 예시

다음은 DESTINATION 절을 설정한 예시입니다.

"destination": {
    "jeus": [
        {
            "name": "MyGroup"
        }
    ],
    "reverse_proxy": {
        "common_config": {
                "server_health_check": {
                    "retry_count": 3,
                    "failback_interval": 5,
                    "failure" [connection_timeout, "http_invalid", "http_4xx"]
                }
        }
        "reverse_proxy_group": [
            {
                "name": "rproxy1",
                "reverse_proxy_server": [
                    {
                        "address": "192.168.15.114:28080",
                        "enable_proxy_ssl": false
                    }
                ]
            }
        ]
    }
    "htmls": [
        {
            "name": "htmls1"
        }
    ]
}