내용 목차
본 장에서는 WebtoB 5 Fix#3의 신규 기능과 이전 버전에서 변경된 기능, 버그 패치에 대해서 설명한다.
HEADERS 절 Action 항목에 다음의 기능이 추가되었다.
* HEADERS header1 Action="AddIfAbsentRequest", FieldName="Test_Header", FieldValue="test" header2 Action="AddIfAbsentResponse", FieldName="Test_Header", FieldValue="test" header3 Action="AppendResponse", FieldName="Test_Header", FieldValue="AppendResponse" header4 Action="EchoResponse", FieldName="Test_Header"
항목 | 설명 |
---|---|
Action |
|
자세한 사용방법은 “WebtoB 관리자 안내서”의 “3.25. HEADERS 절”을 참고한다.
관련이슈 : IMS-233552
클라이언트에서 보낸 Request Header에 XFF(X-Forwarded-For) 헤더가 포함된 경우 해당 값을 JEUS에서 Remote IP로 받아갈 수 있도록 하는 기능이 추가되었다.
관련이슈 : IMS-208907
Reverse Proxy에 X-Forwarded-Proto, X-Forwarded-Port 헤더를 지원하는 기능이 추가되었다.
관련이슈 : IMS-213003
LOGGING 절의 errorlog에도 accesslog와 같은 형식의 format 설정 기능이 추가되었다.
*LOGGING error_log Format = "ERROR", # "%h %l %u %t \"%r\" %s %b", Filename = "log/archives/error_%Y%%M%%D%.log", Option = "sync", : :
accesslog와 형식상 동일하기 때문에 혼동하지 않도록 주의가 필요하다. 자세한 사용방법은 “WebtoB 관리자 안내서”의 “3.13. LOGGING 절”을 참고한다.
관련이슈 : IMS-213098, IMS-211162
LOGLEVEL 절에 File 크기를 기준으로 Logfile을 재생성하는 RotateByFileSize 기능이 추가되었다.
자세한 사용방법은 “WebtoB 관리자 안내서”의 “3.24. LOGLEVEL 절”을 참고한다.
관련이슈 : IMS-233595
wsadmin의 loglevel 명령에 -rf(RotateByFileSize)옵션이 추가되었다. 기존의 -r 옵션이 -rs(RotateBySeconds)로 변경되었다.
*LOGLEVEL .hth Level="Trace", RotateBySeconds = 100, RotateByFileSize = 10000, options ="dsW", : :
$$1 tmaxsoft (wsadm) [2020-08-11T17:26:46]: cfg -ll LOGLEVEL: Logger = .hth, Level = TRACE, Options = dsW, RotateBySeconds = 100, RotateByFileSize = 10000 $$1 tmaxsoft (wsadm) [2020-08-03T01:40:06]: ll Usage: ll loggername -l level | -o options | -rs rotatebyseconds | -rf rotatebyfilesize loggername : name of the logger (e.g. .hth) level : TRACE|DEBUG|INFO|WARN|FATAL options : [-]dcR,dcW,dsR,dsW '-' turns off the specified options rotatebyseconds : trace log files separately by time (e.g. 500) rotatebyfilesize : trace log files separately by file size (e.g. 100000000)
자세한 사용방법은 “WebtoB 관리자 안내서”의 “6.1.7.6. ll”을 참고한다.
관련이슈 : IMS-233595
Cookie를 차단하는 브라우저에서 세션 유지를 위하여 SERVER 절에 SessionIdUrlKey 기능이 추가되었다.
*SERVER MyGroup SvgName = jsvg, MinProc = 10, MaxProc = 20, SessionIdUrlKey = "jsessionid", : :
SessionIdCookieKey 항목이 설정된 경우 SessionIdCookieKey 설정을 우선한다.
자세한 사용방법은 “WebtoB 관리자 안내서”의 “3.7. SERVER 절”을 참고한다.
관련이슈 : IMS-204793
WorkerThread가 블록되는 경우에 대응할 수 있도록 FA(First Available) 방식의 스케줄링 기능이 추가되었다.
HTH_THREAD 절의 Schedule 항목을 FA, RR로 설정할 수 있다. (기본값: FA)
*HTH_THREAD hth_worker SendfileThreads = 10, SendfileThreshold=32768, Schedule = FA, : :
다음은 설정값에 대한 설명이다.
설정값 | 설명 |
---|---|
RR | Round Robin 방식으로 순차적으로 Worker Thread에 요청을 할당한다. |
FA | First Assign 방식으로 현재 가장 적은 일을 처리하고 있는 Worker Thread에 요청을 할당한다. |
자세한 사용방법은 “WebtoB 관리자 안내서”의 “3.5. HTH_THREAD 절”을 참고한다.
관련이슈 : IMS-212463
JEUS 연동상태에서 클라이언트 요청이 JEUS로 전달되던 중 queuing 상태에서 timeout이 발생하는 경우 HTH Core 방지를 위한 보완코드를 추가하여 다음 요청을 처리할 수 있도록 하였다.
추가한 보완코드가 동작하는 경우 syslog에 HTH0529 메시지가 출력된다.
관련이슈 : IMS-222345
wsadmin의 'st -t' 명령에 Thread가 현재 처리 중인 TASK 유형을 표시하는 task_type이 추가되었다.
WorkerThread의 status가 RUN인 경우에만 task_type이 표시되며(그 외에는 NONE), status가 RUN인 경우에도 task_type이 NONE으로 표시될 수 있다.
$$74 tmaxsoft (wsadm) [2020-07-29T11:21:54]: st -t HTH 0: RDY ------------------------------------------------------------------------------------- no thread_id status elapsed atasks ptasks qtasks task_type ------------------------------------------------------------------------------------- 0 ACCESSLOG RDY 0 453115 453115 0 NONE 1 WORKER001 RUN 0 326226 326225 1 SSLWRITE 2 WORKER002 RUN 0 167882 167881 1 SSLREAD 3 WORKER003 RUN 0 134442 134441 1 SSLREAD 4 WORKER004 RDY 0 106250 106250 0 SSLREAD 5 WORKER005 RDY 0 81404 81404 0 NONE 6 WORKER006 RDY 0 58007 58007 0 NONE 7 WORKER007 RDY 0 37496 37496 0 NONE 8 WORKER008 RDY 1 20338 20338 0 NONE 9 WORKER009 RDY 1 10957 10957 0 NONE 10 WORKER010 RDY 1 5671 5671 0 NONE
자세한 사용방법은 “WebtoB 관리자 안내서”의 “6.1.2.3. stat (st)”를 참고한다.
관련이슈 : IMS-120109
JSV을 연결하는 경우 Connection(SPR)이 모자라는 경우 systemlog에 출력되는 [HTH-00063]과 [HTH-00292] 로그에 Client IP(Remote IP)를 추가로 표시하는 기능이 추가되었다.
관련이슈 : IMS-223842
HEADERS 절 FiledValue 항목에 Log format 형식 문자열 지원 기능이 추가되었다.
Log format 형식을 설정하는 경우 이스케이프 문자는 '%'를 지원한다.
Trace Log에는 SSL 덤프를 포함하는 LOGLEVEL 절의 IncludeSslDump 옵션이 추가되었다. (기본값: N)
ACCESS 절 Allow / Deny의 IP 그룹화를 위한 설정 편의를 위하여 IPGroup 기능이 추가되었다.
ACCESS 절의 Allow 또는 Deny 항목에 IPGroup 이름을 사용할 수 있다.
*IPGroup ipgroup1 IP = "localhost, 192.168.13.49" ipgroup2 IP = "localhost, 192.168.13.49, 192.168.13.50" *ACCESS access_allow Order = "allow,deny", Allow = "ipgroup1" access_deny Order = "deny,allow", Deny = "ipgroup2"
자세한 사용방법은 “WebtoB 관리자 안내서”의 “3.14. ACCESS 절”를 참고한다.
관련이슈 : IMS-201979
VHOST 별로 인코딩 설정을 추가할 수 있는 기능이 추가되었다.
*VHOST vhost1 : CheckURL = Y, # default : N CheckURLFrom = "euc-kr", # default: utf-8 CheckURLTo = "utf-8", CheckUrlJsvExcept = Y, # default : N : :
다음은 설정값에 대한 설명이다.
설정값 | 설명 |
---|---|
CheckURL | HTTP Request URL path의 Charset을 변환할지 여부를 결정한다. Y로 설정한 경우 CheckURLFrom과 CheckURLTo를 설정해야 한다. |
CheckURLFrom | HTTP Request URL path가 사용하는 Charset을 설정한다. |
CheckURLTo | 서버가 사용하는 Charset을 설정한다. |
CheckUrlJsvExcept | JEUS로 포워딩하는 요청에 대하여 CheckURL 설정을 적용하지 않을지 여부를 결정한다. Y로 설정한 경우 JEUS로 요청을 보낼 때에는 URI를 변환하지 않는다. |
자세한 사용방법은 “WebtoB 관리자 안내서”의 “3.4. VHOST 절”을 참고한다.
관련이슈 : IMS-201972
동일한 url에 대해 여러 개의 HTTP Status Code 값을 설정할 수 있는 MultiStatus가 추가되었다.
Status와 함께 설정한 경우 명시된 순서대로 적용된다.
*ERRORDOCUMENT errordoc1 MultiStatus = "403,404,413,414,500,503", Url = "/error.html", : :
자세한 사용방법은 “WebtoB 관리자 안내서”의 “3.19. ERRORDOCUMENT 절”을 참고한다.
관련이슈 : IMS-196685
WebtoB accesslog를 사용자가 지정한 리모트 서버에 남길 수 있는 기능으로, 리모트 서버의 주소와 로그를 남길 경로, connection timeout 등을 설정할 수 있다.
LOGGING 절에 LogHandler 설정에 LOG_HANDLER 이름을 사용할 수 있다.
*LOG_HANDLER lh1 ServerAddress = "remote.server.com:8080", ConnectTimeout = 3, ReconnectTime = 10, Timeout = 60, Resource = "webtob/accesslog", Protocol = "HTTP", : :
다음은 설정값에 대한 설명이다.
항목 | 설명 |
---|---|
LOG_HANDLER 절 이름 | LOG_HANDLER 절 이름을 설정한다. (예: lh1) |
ServerAddress | accesslog를 남길 리모트 서버의 주소를 설정한다. |
ConnectTimeout | 리모트 서버로 연결 요청 후 연결될 때까지 기다리는 시간을 설정한다. |
ReconnectTime | 리모트 서버와 연결 실패시 다시 연결을 요청할 때까지 기다리는 시간을 설정한다. |
Timeout | 설정한 시간이 지나도록 accesslog 기록 요청이 발생하지 않으면 리모트 서버와 연결을 종료한다. |
Resource | 리모트 서버에서 accesslog를 저장할 경로를 설정한다. |
Protocol | 리모트 서버에 accesslog 요청을 보낼 때 사용할 프로토콜을 설정한다. |
자세한 사용방법은 “WebtoB 관리자 안내서”의 “3.30. LOG_HANDLER 절” 및 “WebtoB 관리자 안내서”의 “3.13. LOGGING 절”을 참고한다.
webadmin 명령으로 지정된 로그 파일에서 원하는 문자열을 검색할 수 있는 기능이 추가되었다.
$$1 webtob (wsadm) [2020-07-29T14:58:35]: logsearch successfully system.log_07292020 [2020-07-29T10:44:16] [HTH(22378)] [I] [HTH-00074] Successfully connected and registered to HTL. HTH is ready to receive client connections. [2020-07-29T10:44:16] [HTL(22377)] [I] [HTL-00021] Successfully registered HTH. Start listening for this HTH. index=0, fd=6 [2020-07-29T14:57:29] [HTH(4901)] [I] [HTH-00074] Successfully connected and registered to HTL. HTH is ready to receive client connections. [2020-07-29T14:57:29] [HTL(4900)] [I] [HTL-00021] Successfully registered HTH. Start listening for this HTH. index=0, fd=6
자세한 사용방법은 “WebtoB 관리자 안내서”의 “6.1.7.5. logsearch”를 참고한다.
관련이슈 : IMS-186536
HTTP Request header의 형식이 잘못된 경우 에러처리를 하는 옵션이 추가되었다. 무시하거나 에러처리 중에 선택한다.
HTTP Request header는 콜론(:)으로 구분된 name, value로 구성되는데("name:value"), 콜론이 없는 header를 무시하고 다음 header를 읽을것인지 여부를 결정한다.
*NODE webtob : IgnoreMissingColonErr = Y, :
항목 | 설명 |
---|---|
IgnoreMissingColonErr | 다음은 설정값에 대한 설명이다.
|
자세한 사용방법은 “WebtoB 관리자 안내서”의 “3.3. NODE 절”을 참고한다.
관련이슈 : IMS-178412
Reverse Proxy에서 HEADERS 절의 기능을 사용할 수 있도록 REVERSE_PROXY_GROUP 및 REVERSE_PROXY에 Headers 설정이 추가되었다.
설정 방법 및 동작 방식은 SERVER 절, SVRGROUP 절의 Heades 항목과 동일하다.
*REVERSE_PROXY_GROUP rproxygroup1 : Headers = "header1, header2" *REVERSE_PROXY rproxy1 : Headers = "header1, header2"
자세한 사용방법은 “WebtoB 관리자 안내서”의 “3.22. REVERSE_PROXY_GROUP 절” 및 “WebtoB 관리자 안내서”의 “3.23. REVERSE_PROXY 절”을 참고한다.
관련이슈 : IMS-178383
SvrGroup 기준으로 서버들 사이에 부하 분산을 해 주는 기능이 추가되었다.
LBSvgName에 명시한 SVRGROUP 설정에는 LBServers나 LBBackup 옵션이 적용되어 있어야 한다.
*URI uri1 Uri = "/jsvtest/", Svrtype = JSV, LBSvgName = jsvg *SVRGROUP jsvg SvrType = JSV, LBServers = "MyGroup", LBBackup = "MyGroup2" *SERVER MyGroup SVGNAME = jsvg MyGroup2 SVGNAME = jsvg
자세한 사용방법은 “WebtoB 관리자 안내서”의 “3.6. SVRGROUP 절” 및 “WebtoB 관리자 안내서”의 “3.7. SERVER 절”을 참고한다.
관련이슈 : IMS-173652
WBSSL 버전이 WBSSL 3.1_1.0.2s에서 WBSSL 1.1.1d로 업그레이드되었다.
TLSv1.3 프로토콜을 지원한다.
SSLv3 이하 버전을 지원하지 않도록 변경되었다.
$>wbssl version WBSSL 1.1.1d 10 Sep 2019
이번 버전부터 WBSSL 독자적인 버전번호를 사용하지 않고 OpenSSL 버전번호를 그대로 사용하도록 변경되었다.
wsadmin의 loglevel 명령에 -rf(RotateByFileSize) 옵션 추가를 위하여 기존의 -r 옵션이 -rs(RotateBySeconds)로 변경되었다.
$> wsadmin $$3 tmaxsoft (wsadm) [2020-08-11T15:42:18]: ll Usage: ll loggername -l level | -o options | -rs rotatebyseconds | -rf rotatebyfilesize loggername : name of the logger (e.g. .hth) level : TRACE|DEBUG|INFO|WARN|FATAL options : [-]dcR,dcW,dsR,dsW '-' turns off the specified options rotatebyseconds : trace log files separately by time (e.g. 500) rotatebyfilesize : trace log files separately by file size (e.g. 100000000)
자세한 사용방법은 “WebtoB 관리자 안내서”의 “6.1.7.6. ll”을 참고한다.
관련이슈 : IMS-233595
SVRGROUP 절, REVERSE_PROXY_GROUP 절, REVERSE_PROXY 절, HEADERS 절, EXT 절에 RegExp 항목의 문자열 최대 크기가 [256]에서 [512]로 변경되었다.
관련이슈 : IMS-217612
HTH_THREAD 절의 SendfileThreshold 항목 기본값이 32768에서 0으로 변경되었다.
관련이슈 : IMS-217936 , IMS-216690, IMS-217549
NODE 절의 InitialConnectionTimeout 항목 기본값이 0에서 10으로 변경되었다.
로그 레벨 변경
HTH0374, HTH0295의 로그 레벨이 FATAL에서 DEBUG로 변경되었다.
HTH0113, HTH0099의 로그 레벨이 INFO에서 DEBUG로 변경되었다.
HTH0295, HTH0374의 로그 레벨이 FATAL에서 DEBUG로 변경되었다
HTH0094의 로그 레벨이 DEBUG에서 WARN으로 변경되었다.
HTH5037의 로그 레벨이 DEBUG로 변경되었다.
관련이슈 : IMS-233567, IMS-222345, IMS-197843, IMS-193693
디렉터리 URI로 끝나는 요청에 대한 응답은 캐시되지 않도록 변경되었다.
관련이슈 : IMS-239793
GET, POST 외의 메소드를 사용하는 경우 요청 URL과 errordoc URL이 동일할 경우 무한루프가 발생하지 않게 하기 위해 메소드의 동작을 GET 메소드와 동일하게 수정하였다.
관련이슈 : IMS-197432
SSL 처리 중 클라이언트 커넥션이 끊긴 것을 인지하지 못하고 Timeout까지 기다리는 경우가 발생하지 않도록 개선하였다.
관련이슈 : IMS-197455
JEUS 버그로 WebtoB에서는 WebtoB-JEUS 사이에서 WebtoB가 보낸 요청에 대한 응답이 아닌 경우를 추가로 체크하여, 해당 응답을 버리고 해당 JSV 커넥션은 끊어주도록 하는 보완코드를 추가하였다.
관련 메시지로 HTH0499가 추가되었다.
관련이슈 : IMS-170761
JSV Compression이 간헐적으로 실패하는 버그를 수정하였다.
관련이슈 : IMS-204873
Ring buffer 크기보다 큰 Chunked Request를 처리하는 경우 CRLF를 찾지 못하는 버그가 수정되었다.
관련이슈 : IMS-207302
JSV Response에 Transfer-Encoding: chunked가 포함된 경우 accesslog의 '%b'(응답크기)가 잘못 계산되어 표시되는 버그가 수정되었다.
관련이슈 : IMS-233567
HEADERS 설정을 통해서 AddResponse 기능으로 사이즈가 큰 Header를 추가할 경우 Core가 발생할 수 있는 버그가 수정되었다.
관련이슈 : IMS-233568
NODE 절, VHOST 절의 Options 항목에 -PYTHON, -FILTER 옵션을 지원하지 않는 버그가 수정되었다.
관련이슈 : IMS-210035
SVRGROUP 절의 LBBackup 항목을 설정할 때 wsclf 실행할 경우 core가 발생되는 버그가 수정되었다.
관련이슈 : IMS-213425
cachelist 명령을 처리할 때 cachelist의 Total content length가 int 최댓값 보다 커질 경우 overflow되어 음수로 표시되는 버그가 수정되었다.
관련이슈 : IMS-221376
Reverse Proxy 환경에서 'restat' 명령으로 통계정보 초기화를 수행하는 경우 st -rpg 명령으로 조회되는 정보 중 conns 정보(커넥션 갯수)가 비정상 표시되는 버그가 수정되었다.
관련이슈 : IMS-181798
HTH를 시작하는 경우 JSV에 대해 SHMS를 재시작(초기화)하지 않아서, HTH를 재기동할 때 HTH Connection이 중복 또는 누적되어 표시되는 버그가 수정되었다.
관련이슈 : IMS-223842
Request Header에 "Expect: 100-continue"를 사용하는 경우 Memory Leak이 발생하는 버그가 수정되었다.
관련이슈 : IMS-223192
WebtoB가 down될 때 WSM이 충돌하여 정상적으로 down되지 않는 버그가 수정되었다.
관련이슈 : IMS-231536
HTTP BASIC/DIGEST Auth를 사용할 경우 잘못된 Authorization 정보를 사용할 때 401 Unauthorized가 아닌 400을 응답하던 버그가 수정되었다.
관련이슈 : IMS-232848
unsetResponse 헤더를 사용할 경우 HTH Core가 발생할 수 있는 버그가 수정되었다.
관련이슈 : IMS-234960
SunOS SPARC에서 hthmem 명령을 수행하는 경우 HTH Core가 발생하는 문제가 수정되었다.
관련이슈 : IMS-201358, IMS-201303
Headers 절의 AddResponse 사용으로 추가된 데이터 크기가 기존에 할당한 버퍼보다 클 경우 버퍼 재할당 수행 중 Core가 발생하던 문제가 수정되었다.
관련이슈 : IMS-238001
WebDAV PROPFIND 메소드를 수행하는 경우 Response Body Size가 8kb를 넘는 경우 Core가 발생하는 문제가 수정되었다.
관련이슈 : IMS-238863
Windows 환경에서 지원하지 않는 옵션을 설정하는 경우 wscfl를 수행하는 경우 CFL-05010과 CFL-05011에서 각 옵션의 설정값을 출력하는 문제가 수정되었다.
관련 설정 : HTH_THREAD.SendfileThreads, SendfileThreshold, AccessLogThread
관련이슈 : IMS-239953
ServiceOrder가 "EXT,URI"인 경우 디렉터리 URI을 호출하는 경우 해당 요청을 캐시에 추가하면서 Core가 발생하는 문제가 수정되었다.
ServiceOrder 설정과 무관하게 디렉터리 URI로 끝나는 요청에 대한 응답은 캐시되지 않도록 수정되었다.
관련이슈 : IMS-239793
JSV를 통해 JEUS에서 WebtoB로 보내는 메시지의 크기가 WebtoB의 FlowControl buffer size 보다 큰 경우 무한루프가 되어 Timeout 발생하는 문제가 수정되었다.
관련이슈 : IMS-203845
CacheMaxCompressSize를 설정할 경우 HTH에서 Core가 발생하는 문제가 수정되었다.
관련이슈 : IMS-203032
PROXY_SSL를 설정하는 경우 클라이언트가 응답을 받기 전에 연결을 종료하는 경우 HTH Core가 발생하는 문제가 수정되었다.
관련이슈 : IMS-203281
ReverseProxy에서 PROXY_SSL과 PersistentConnection 기능을 함께 사용하는 경우 HTH Core 발생하던 문제가 수정되었다.
관련이슈 : IMS-176628
ReverseProxy에서 ProxySSL 설정된 상태에서 ReverseProxy로 Chunk 메시지를 보내는 경우 내부 이벤트 처리 문제로 400 또는 404 발생하던 문제가 수정되었다.
관련이슈 : IMS-187018
WebtoB HTMLS에서 응답을 처리하여 SSL write하는 중에 클리이언트가 연결을 끊은 것으로 잘못 판단하여 일부 static file들이 처리되지 않는 문제가 해결되었다.
관련이슈 : IMS-202614
SSL 에러를 처리하는 경우 errorno 처리방식을 개선하여 일부 SSL 요청이 처리되지 않던 문제를 수정하였다.
관련이슈 : IMS-197920
WJPv2를 사용하는 중 JEUS가 shutdown되는 경우 JEUS와 주고받는 메시지 처리 문제로 HTH Core가 발생하던 문제가 수정되었다.
관련이슈 : IMS-197843
용량이 큰 Chunked 요청에 대한 error logging 중 HTH Core 발생하던 문제가 수정되었다.
관련이슈 : IMS-185884
FlowControl Buffer Size 보다 큰 응답(Response header포함)만 캐시하도록 수정되었다.
CacheMaxFileSize 설정의 최대값도 FlowControl Buffer Size 이하로 제한하도록 수정되었다.
관련이슈 : IMS-190625
JSV 응답을 압축하여 SSL 처리 후 클라이언트에게 보낼 때 JSV응답 및 압축한 결과도 한 번에 전송하지 못할만큼 충분히 큰 경우에 Core 발생하던 문제가 수정되었다.
관련이슈 : IMS-188265
WJPv2를 사용하는 경우 JEUS가 정상 다운될 때 처리 중이던 요청이 마무리되지 않고 끊기는 문제가 수정되었다.
관련이슈 : IMS-187653
wsadmin에서 "restat -a"를 실행할 때 "st -tcpgw" 정보가 초기화되지 않는 버그가 수정되었다.
관련이슈 : IMS-176845
Client-WebtoB가 SSL 연결된 상태에서 RequestLevelPing=Y 기능을 사용하는 경우 연결된 JEUS 서버의 처리 속도가 클라이언트의 Request 전송 속도보다 느린 경우 Core 발생하던 문제가 수정되었다.
관련이슈 : IMS-184354, IMS-184207, IMS-184079
WJPv2에서 RequestLevelPing을 사용하는 경우 POST 요청의 body를 JEUS로 전달하는 시점에 발생하던 오류가 수정되었다.
관련이슈 : IMS-178356
ForceCacheModificationCheck를 설정하는 경우 에러 메시지가 생성될 때 VHOST를 찾지 못하여 VHOST 절에 설정한 ERRORDOCUMENT 설정이 동작하지 않는 문제가 수정되었다.
관련이슈 : IMS-174041