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

 
728x90

+ Recent posts