728x90
개요
WebtoB Vhost에 URLREWRITE 설정 후 503에러 발생
Rewrite 설정시 하위 Extension 붙은 거래에 대하여 처리 불가문제 발생
현상
rewrite 할 도메인에 대하여 rewrite로 전달 해주는 VHOST를 추가하고, 해당 VHOST를 SVGROUP에 포함시키지 않은 환경 설정으로 인해 하위 URI(Extension) 붙은 거래가 node로 빠져서 처리 불가.
※ 단. 하위 URI없는 순수 URL은 리라이팅 정상 처리
ex) http://www.abc.com => https://www.abc.com (o)
http://www.abc.com/test.jsp => http://www.abc.com/test.jsp (x)
원인
1) 환경파일 분석
80포트를 사용하는 vh_def_abc 를 추가하고 해당 vhost로 유입 시 443포트로 URLREWRITE 적용
*VHOST
vh_def_abc DOCROOT="해당 DOCROOT",
PORT=80,
HOSTNAME="서비스IP",
HostAlias="www.abc.com",
URLRewrite=Y,
URLRewriteConfig="config/rewrite_abc.cfg"
vh_abc DOCROOT="해당 DOCROOT",
PORT=443,
HOSTNAME="서비스IP",
HostAlias="www.abc.com",
*SVRGROUP
htmlg SVRTYPE=HTML
jsvg_abc SVRTYPE=JSV, VHOSTNAME="vh_abc"
*SERVER
html SVGNAME=htmlg, MinProc=300, MaxProc=600, Schedule=FA
abc SVGNAME=jsvg_abc, MinProc=60, MaxProc=600, SvrChkTime=300, Schedule=FA
2) vhost와 JEUS와의 연관 관계
위 반영된 설정 대로 trace확인 결과 유입된 URI를 분석 후 Vhost와 맵핑되어 있는 JSV Server절을 찾으나, Vhost(vh_def_abc) 맵핑되어 있는 SVRGROUP을 찾을 수 없어 에러를 도출 합니다.
아래는 재현 시 HTH Trace 입니다.
[2018/02/02:15:37:51] HTH-1020 T http_parse.c:362 0: reqline(21)="GET /get.jsp HTTP/1.1"
[2018/02/02:15:37:51] HTH-1020 T http_parse.c:500 0: uripath after unescape[8]="/get.jsp"
[2018/02/02:15:37:51] HTH-1020 T http_io.c:198 0: cli_rdata_getline(45)="Accept: text/html, application/xhtml+xml, */*"
[2018/02/02:15:37:51] HTH-1020 T http_parse.c:819 0: parse_mime_hdr: key(6)="Accept", val(37)="text/html, application/xhtml+xml, */*"
--------------------------------------------------------(중략)--------------------------------------------------------
[2018/02/02:15:37:51] HTH-1020 T http_util.c:2202 make_errmsg("Request (%s) arrived at vhost (%s) is routed to server (%s). But, the server's vhost is different. svc=%s. Check WebtoB configuration.", ...): "Request (GET /get.jsp HTTP/1.1) arrived at vhost (vh_def_abc) is routed to server (abc). But, the server's vhost is different. svc=abc. Check WebtoB configuration."
[2018/02/02:15:37:51] HTH-1020 T http_msg.c:2038 0: send_http_error: svrtype=16, errmsg=Request (GET /get.jsp HTTP/1.1) arrived at vhost (vh_def_abc) is routed to server (abc). But, the server's vhost is different. svc=abc. Check WebtoB configuration.
==> Vhost와 연관된 server절을 찾을 수 없어 errmsg를 생성
[2018/02/02:15:37:51] HTH-1020 T main_hth.c:878 0: msg to tproc: msgtype=142, svcname=, len=222
[2018/02/02:15:37:51] HTH-1020 T http_io.c:2680 free--3() hp=6000000003210c70
[2018/02/02:15:37:51] HTH-1020 T http_error.c:358 _make_http_error_msg: requested_url=/get.jsp
[2018/02/02:15:37:51] HTH-1020 T http_util.c:1814 _wb_make_content_type(0000000000000000"(null)", 6000000000008ec0"text/html", 0, -1, -1):
[2018/02/02:15:37:51] HTH-1020 T http_util.c:1839 _wb_make_content_type--1: default_charset = "Off"
[2018/02/02:15:37:51] HTH-1020 T http_etc.c:2922 headers_response. svri=1, vhosti=0, hpp=9ffffffffffff050(6000000003217910)
[2018/02/02:15:37:51] HTH-1020 T http_etc.c:2974 headers_response. hpp=9ffffffffffff050(6000000003217910)
[2018/02/02:15:37:51] HTH-1020 T main_hth.c:1876 0: reply_to_client--1: fd=12, status=1, whp=6000000003217910, flags=0x20
[2018/02/02:15:37:51] HTH-1020 T main_hth.c:1908 0: msg to client: ind=0, msgtype=2301, svci=0, len=342, clen=192
[2018/02/02:15:37:51] HTH-1020 T http_io.c:1744 0: write_to_cli_async(60000000005e4060): whp=6000000003217910, 0(342)/342
[2018/02/02:15:37:51] HTH-1020 T http_io.c:1786 0: write_to_cli_async--1: write(12, 6000000003217970, 342)=342: errno=0
[2018/02/02:15:37:51] HTH-1020 T http_io.c:2783 0: accesslog_and_init_status: clii=0, rhp=0000000000000000, saved_rhp=60000000032a00c0, msgtype=2301, svrtype=16
[2018/02/02:15:37:51] HTH-1020 T http_log.c:897 process_log: logind=1, len=76, data="16.16.16.8 - - [02/Feb/2018:15:37:51 +0900] "GET /get.jsp HTTP/1.1" 503 192
==> 에러 메세지 발생 후 503에러 도출
3) 결론
WEBTOB에서 Rewritng Rule을 적용하기 이전에 vhost -> svrgroup -> sever 의 관계를 먼저 파악한 뒤 Rewritng Rule이 적용됨.
해결방안
Rewritng Rule을 쓰기 위해서는 Vhost와 SERVER과의 구조(vhost -> svrgroup -> sever)가 필수적으로 구성이 되어야 함.
문제의 환경파일을 아래와 같이 구성하여 Vhost와 SERVER과의 구조를 필수적으로 구성하여야 함.
*VHOST
vh_def_abc DOCROOT="해당 DOCROOT",
PORT=80,
HOSTNAME="서비스IP",
HostAlias="www.abc.com",
URLRewrite=Y,
URLRewriteConfig="config/rewrite_abc.cfg"
vh_abc DOCROOT="해당 DOCROOT",
PORT=443,
HOSTNAME="서비스IP",
HostAlias="www.abc.com"
*SVRGROUP
htmlg SVRTYPE=HTML
jsvg_abc SVRTYPE=JSV, VHOSTNAME="vh_abc, vh_def_abc"
*SERVER
html SVGNAME=htmlg, MinProc=300, MaxProc=600, Schedule=FA
abc SVGNAME=jsvg_card, MinProc=60, MaxProc=600, SvrChkTime=300, Schedule=FA
WebtoB Vhost에 URLREWRITE 설정 후 503에러 발생
Rewrite 설정시 하위 Extension 붙은 거래에 대하여 처리 불가문제 발생
현상
rewrite 할 도메인에 대하여 rewrite로 전달 해주는 VHOST를 추가하고, 해당 VHOST를 SVGROUP에 포함시키지 않은 환경 설정으로 인해 하위 URI(Extension) 붙은 거래가 node로 빠져서 처리 불가.
※ 단. 하위 URI없는 순수 URL은 리라이팅 정상 처리
ex) http://www.abc.com => https://www.abc.com (o)
http://www.abc.com/test.jsp => http://www.abc.com/test.jsp (x)
원인
1) 환경파일 분석
80포트를 사용하는 vh_def_abc 를 추가하고 해당 vhost로 유입 시 443포트로 URLREWRITE 적용
*VHOST
vh_def_abc DOCROOT="해당 DOCROOT",
PORT=80,
HOSTNAME="서비스IP",
HostAlias="www.abc.com",
URLRewrite=Y,
URLRewriteConfig="config/rewrite_abc.cfg"
vh_abc DOCROOT="해당 DOCROOT",
PORT=443,
HOSTNAME="서비스IP",
HostAlias="www.abc.com",
*SVRGROUP
htmlg SVRTYPE=HTML
jsvg_abc SVRTYPE=JSV, VHOSTNAME="vh_abc"
*SERVER
html SVGNAME=htmlg, MinProc=300, MaxProc=600, Schedule=FA
abc SVGNAME=jsvg_abc, MinProc=60, MaxProc=600, SvrChkTime=300, Schedule=FA
2) vhost와 JEUS와의 연관 관계
위 반영된 설정 대로 trace확인 결과 유입된 URI를 분석 후 Vhost와 맵핑되어 있는 JSV Server절을 찾으나, Vhost(vh_def_abc) 맵핑되어 있는 SVRGROUP을 찾을 수 없어 에러를 도출 합니다.
아래는 재현 시 HTH Trace 입니다.
[2018/02/02:15:37:51] HTH-1020 T http_parse.c:362 0: reqline(21)="GET /get.jsp HTTP/1.1"
[2018/02/02:15:37:51] HTH-1020 T http_parse.c:500 0: uripath after unescape[8]="/get.jsp"
[2018/02/02:15:37:51] HTH-1020 T http_io.c:198 0: cli_rdata_getline(45)="Accept: text/html, application/xhtml+xml, */*"
[2018/02/02:15:37:51] HTH-1020 T http_parse.c:819 0: parse_mime_hdr: key(6)="Accept", val(37)="text/html, application/xhtml+xml, */*"
--------------------------------------------------------(중략)--------------------------------------------------------
[2018/02/02:15:37:51] HTH-1020 T http_util.c:2202 make_errmsg("Request (%s) arrived at vhost (%s) is routed to server (%s). But, the server's vhost is different. svc=%s. Check WebtoB configuration.", ...): "Request (GET /get.jsp HTTP/1.1) arrived at vhost (vh_def_abc) is routed to server (abc). But, the server's vhost is different. svc=abc. Check WebtoB configuration."
[2018/02/02:15:37:51] HTH-1020 T http_msg.c:2038 0: send_http_error: svrtype=16, errmsg=Request (GET /get.jsp HTTP/1.1) arrived at vhost (vh_def_abc) is routed to server (abc). But, the server's vhost is different. svc=abc. Check WebtoB configuration.
==> Vhost와 연관된 server절을 찾을 수 없어 errmsg를 생성
[2018/02/02:15:37:51] HTH-1020 T main_hth.c:878 0: msg to tproc: msgtype=142, svcname=, len=222
[2018/02/02:15:37:51] HTH-1020 T http_io.c:2680 free--3() hp=6000000003210c70
[2018/02/02:15:37:51] HTH-1020 T http_error.c:358 _make_http_error_msg: requested_url=/get.jsp
[2018/02/02:15:37:51] HTH-1020 T http_util.c:1814 _wb_make_content_type(0000000000000000"(null)", 6000000000008ec0"text/html", 0, -1, -1):
[2018/02/02:15:37:51] HTH-1020 T http_util.c:1839 _wb_make_content_type--1: default_charset = "Off"
[2018/02/02:15:37:51] HTH-1020 T http_etc.c:2922 headers_response. svri=1, vhosti=0, hpp=9ffffffffffff050(6000000003217910)
[2018/02/02:15:37:51] HTH-1020 T http_etc.c:2974 headers_response. hpp=9ffffffffffff050(6000000003217910)
[2018/02/02:15:37:51] HTH-1020 T main_hth.c:1876 0: reply_to_client--1: fd=12, status=1, whp=6000000003217910, flags=0x20
[2018/02/02:15:37:51] HTH-1020 T main_hth.c:1908 0: msg to client: ind=0, msgtype=2301, svci=0, len=342, clen=192
[2018/02/02:15:37:51] HTH-1020 T http_io.c:1744 0: write_to_cli_async(60000000005e4060): whp=6000000003217910, 0(342)/342
[2018/02/02:15:37:51] HTH-1020 T http_io.c:1786 0: write_to_cli_async--1: write(12, 6000000003217970, 342)=342: errno=0
[2018/02/02:15:37:51] HTH-1020 T http_io.c:2783 0: accesslog_and_init_status: clii=0, rhp=0000000000000000, saved_rhp=60000000032a00c0, msgtype=2301, svrtype=16
[2018/02/02:15:37:51] HTH-1020 T http_log.c:897 process_log: logind=1, len=76, data="16.16.16.8 - - [02/Feb/2018:15:37:51 +0900] "GET /get.jsp HTTP/1.1" 503 192
==> 에러 메세지 발생 후 503에러 도출
3) 결론
WEBTOB에서 Rewritng Rule을 적용하기 이전에 vhost -> svrgroup -> sever 의 관계를 먼저 파악한 뒤 Rewritng Rule이 적용됨.
해결방안
Rewritng Rule을 쓰기 위해서는 Vhost와 SERVER과의 구조(vhost -> svrgroup -> sever)가 필수적으로 구성이 되어야 함.
문제의 환경파일을 아래와 같이 구성하여 Vhost와 SERVER과의 구조를 필수적으로 구성하여야 함.
*VHOST
vh_def_abc DOCROOT="해당 DOCROOT",
PORT=80,
HOSTNAME="서비스IP",
HostAlias="www.abc.com",
URLRewrite=Y,
URLRewriteConfig="config/rewrite_abc.cfg"
vh_abc DOCROOT="해당 DOCROOT",
PORT=443,
HOSTNAME="서비스IP",
HostAlias="www.abc.com"
*SVRGROUP
htmlg SVRTYPE=HTML
jsvg_abc SVRTYPE=JSV, VHOSTNAME="vh_abc, vh_def_abc"
*SERVER
html SVGNAME=htmlg, MinProc=300, MaxProc=600, Schedule=FA
abc SVGNAME=jsvg_card, MinProc=60, MaxProc=600, SvrChkTime=300, Schedule=FA
728x90
'IT > MiddleWare(WEB WAS)' 카테고리의 다른 글
[WWBTOB/JEUS] Network의 문제로 기인한 Web 서비스 지연 및 불가 (0) | 2018.11.22 |
---|---|
[JEUS]Hotspot Compile 시 비정상종료 발생 (0) | 2018.11.20 |
[JEUS]큰 크기의 세션으로 인한 Queing (0) | 2018.11.09 |
[JEUS6]2중화 구성환경에서 세션 단절 현상 (0) | 2018.11.07 |
[WEBTOB]기동 후 Port LISTEN이 안되는 경우 (0) | 2018.11.05 |