UseInternalHtmls=Y로 설정하게 되면 HTH에서 내장 HTMLS thread를 생성하여 정적 Html 페이지를 처리하게 된다. 내부 Socket 통신을 사용하는 시간이 줄어들어 기존 방식보다 처리속도가 빠르다.
내장 HTMLS는 HTMLS 서버가 제공하는 기능 중 가장 많이 사용되는 정적 파일, conditional GET 등을 처리한다.
[예 17.1] Internal HTMLS 설정 방법
NODE 절에 내장 HTMLS 설정을 한다.
*NODE
webmain WEBTOBDIR = "/usr/local/webtob",
...
UseInternalHtmls = Y,
InternalHtmlsReadSize = 16384, #default
InternalHtmlsMaxCacheSize = 8192, #default
InternalHtmlsAsyncReadThreads = 16 #default
InternalHtmlsAsyncReadThreshold = 32768, #default
InternalHtmlsSendFileThreshold = 0
Windows에서는 이 설정을 사용할 수 없다. 설정에 대한 설명은 “WebtoB 관리자 안내서”의 “3.3. NODE 절”을 참고한다.
SendFile 기능을 추가하였다. SendFile은 커널 레벨에서 처리되기 때문에 파일 전송에 불필요한 오버헤드를 줄여 빠른 처리를 하게 된다.
[예 17.2] SendFile 설정 방법
NODE 절에 내장 HTMLS 설정을 한 경우에 SendFile 기능이 사용 가능하다.
*NODE
webmain WEBTOBDIR = "/usr/local/webtob",
...
UseInternalHtmls = Y,
InternalHtmlsReadSize = 16384,
InternalHtmlsMaxCacheSize = 8192,
InternalHtmlsAsyncReadThreshold = 32768,
InternalHtmlsSendFileThreshold = 0 #default
Windows에서는 이 설정을 사용할 수 없다. Solaris 8 초기 버전의 경우 SendFile을 사용하기 위해 OS 패치가 필요하다. 설정에 대한 설명은 “WebtoB 관리자 안내서”의 “3.3. NODE 절”을 참고한다.
한글 URL 처리를 하는 경우 UTF-8 요청에 대한 처리를 TechNet에서 제공하고있는 UTF-8 Filter를 설정하여 해결하고 있었다.
그러나 UTF-8 Filter의 Makefile이 cc만 지원하는 문제와 시스템마다 locale값이 다른 문제등의 시스템 환경 문제로 인하여 설정에 어려움이 있었다.
CheckURL의 기능은 UTF-8 Filter를 제품에 포함하고 설정값을 동일하게 하여 UTF-8 Filter설정을 간편하게 하였다. UTF-8과 EUC-KR만 지원한다.
[예 17.3] CheckURL 설정 방법
UTF-8과 EUC-KR만 지원하므로 CheckURL을 사용할 경우에는 다음과 같이 설정해야 한다.(추가 charset은 추후 지원예정)
*NODE
webmain WEBTOBDIR = "/usr/local/webtob",
...
CheckURL = Y,
CheckURLTo = "euc-kr",
CheckURLFrom = "utf-8" #default
설정에 대한 설명은 “WebtoB 관리자 안내서”의 “3.3. NODE 절”을 참고한다.
WebtoB가 지원하는 Method는 GET, POST, HEAD, OPTIONS이였으며 CONNECT Method를 추가하였다.
CONNECT Method는 TLS/SSL 통신을 위해 proxy tunneling(rfc: draft-luotonen-web-proxy-tunneling)을 하기 위해 사용된다.
[예 17.4] CONNECT Method 설정 방법
기본 설정에는 CONNECT Method가 설정되어 있지 않으며 +CONNECT 를 통해 설정을 한다.
*NODE
webmain WEBTOBDIR = "/usr/local/webtob",
...
METHOD="+CONNECT" #default GET, POST, HEAD, OPTIONS
설정에 대한 설명은 “WebtoB 관리자 안내서”의 “3.3. NODE 절”을 참고한다.
관련이슈 : IMS-48555
액세스 로그를 서버의 시간 단위마다 새롭게 파일을 생성하는 기능을 추가하였다.
RotateBySeconds와 동일한 기능이지만 시간 단위가 다르다.
RotateBySeconds는 이전 생성된 로그 파일 시간이 기준이 된다. 즉, RotateBySeconds=3600일 경우 먼저 생성된 Log의 생성시간이 1시13분이면 새로 생성되는 시간은 2시14분이 된다.(Clinet 요청이 없으면 요청이 올 때까지 로그는 생성하지 않는다.)
ValidHours의 경우 서버의 시간을 기준으로 한다. ValidHours=1(단위 : 시간)일 경우 먼저 생성된 로그의 생성시간이 1시 13분이면 새로 생성되는 시간은 2시 정각이 된다.
[예 17.5] ValidHours 설정 방법
*LOGGING
log1 Format = "DEFAULT", FileName = "log/access_%Y%%M%%D%_%h%.log",
Option = "sync",
ValidHours = 1
설정에 대한 설명은 “WebtoB 관리자 안내서”의 “3.12. LOGGING 절”을 참고한다.
관련이슈 : IMS-46204
로그 파일의 접근 권한 설정 기능을 추가하였다.
이전에는 IPCPerm 설정이 로그 파일의 접근 권한에 영향을 주었다.
IPCPerm에 영향을 받지 않도록 하고, 로그 파일의 접근 권한 설정을 편리하게 설정하기 위해 LogPerm 설정을 추가하였다.
[예 17.6] LogPerm 설정 방법
NODE 절에 다음과 같이 설정한다. 기본값은 0600 이다.
*NODE
webmain WEBTOBDIR = "/usr/local/webtob",
...
LogPerm = 0600
설정 후 결과는 아래와 같다.
drwxrwxr-x 3 webtob1 webtob 4096 2009-12-03 10:30 . drwxrwxr-x 23 webtob1 webtob 4096 2009-12-02 20:55 .. -rw------- 1 webtob1 webtob 3068 2009-12-02 21:07 access_20091202.log -rw------- 1 webtob1 webtob 79 2009-12-02 21:07 error_20091202.log -rw------- 1 webtob1 webtob 2841 2009-12-02 21:07 system_20091202.log
Windows에서는 사용되지 않는다. 설정에 대한 설명은 “WebtoB 관리자 안내서”의 “3.3. NODE 절”을 참고한다.
관련이슈 : IMS-44966
액세스 로그의 내용 중 Cache 처리된 요청을 구별할 수 있는 액세스 로그 Format을 추가하였다.
%c를 설정하면 Cache로 처리된 요청의 경우 "hth cache"로 기록된다.
[예 17.7] 액세스 로그 Format %c 설정 방법
설정을 위해선 Log Format을 사용자가 직접 설정해야 한다.
*LOGGING
log1 Format = "%c %h %l %u %r %s %b",
FileName = "log/access_%Y%%M%%D%.log",
Option = "sync"
설정 후 Access Log의 결과는 다음과 같다.
hth cache 127.0.0.1 - - GET /test.html HTTP/1.1 200 45
설정에 대한 설명은 “WebtoB 관리자 안내서”의 “3.12. LOGGING 절”을 참고한다.
관련이슈 : IMS-46665
큐잉이 발생하게 되면 System Log에 기록하는 기능을 추가하였다. LogLevel은 WARN이어서 추가 설정을 하지 않아도 System Log에 기록된다.
[예 17.8] Syslog 확인 결과
큐잉이 발생한 경우 System Log는 다음과 같이 기록된다.
[2009/12/03:14:14:36] HTH-24107 W HTH0357: Request is queued because all eligible server processes are in use. client ip=127.0.0.1, request=GET /test.html, server=HTML(html)
관련이슈 : IMS-49109
SysLog
설정을 통해 파일 이름을
사용자가 직접 설정하는 기능을 추가하였다.
SysLog 설정을 하지 않으면 ${WEBTOBDIR}/log/system.log의 이름으로 생성된다.
[예 17.9] System Log 파일 이름 설정 방법
LOGGING 절에 설정된 name을 NODE 절 SysLog에 설정한다.
*NODE webmain WEBTOBDIR = "/usr/local/webtob", ... SysLog = "syslog" *LOGGING syslog Format = "SYSLOG", FileName = "log/system_%Y%%M%%D%.log", Option = "sync"
설정에 대한 설명은 “WebtoB 관리자 안내서”의 “3.3. NODE 절”을 참고한다.
HTTP Status Code 3XX 이상 응답을 클라이언트로 보내는 경우, 연결을 유지할 수 있는 기능을 추가하였다.
[예 17.10] KeepAliveErrorStatusCode 설정 방법
*NODE
webmain WEBTOBDIR = "/usr/local/webtob",
...
KeepAliveErrorStatusCode = "301, 302"
설정에 대한 설명은“WebtoB 관리자 안내서”의 “3.3. NODE 절”을 참고한다.
URLRewrite의 조건식 설정인 RewriteCond 규칙에 -f, -d를 추가하였다.
-f 는 File을 의미하며 -d는 Directory를 의미한다.
[예 17.11] RewriteCond -f/-d 설정 방법
NODE 절의 URLRewrite 설정은 다음과 같다.
*NODE webmain WEBTOBDIR = "/usr/local/webtob", ... URLRewrite = Y, URLRewriteConf = "mod_rewrite.cfg"
mod_rewrite.cfg 는 사용자가 파일을 생성해야 한다.
!-f 는 File이 아닌 경우를 의미하고, !-d는 Directory가 아닌 경우를 의미한다.
# mod_rewrite.cfg
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://webtob.example.com/$1
관련이슈 : IMS-46998
AccessLogThroughWSM=N을 설정 시 WSM을 거치지 않고 WebtoB 프로세스가 Access Log를 직접 기록한다.
해당 설정을 사용할 경우 WebtoB 프로세스가 Access Log 메시지들을 직접 로그 파일에 기록하게 되어 WSM을 거치는 시간이 줄어들어 처리속도가 향상된다.
[예 17.12] AccessLogThroughWSM 설정 방법
NODE 절에 설정하며 AccessLogThroughWSM을 설정하지 않을 경우 기존 방식인 WSM이 Access Log를 기록하게 된다.
*NODE
webmain WEBTOBDIR = "/usr/local/webtob",
...
AccessLogThroughWSM = Y #default
Windows 버전은 이 설정을 사용할 수 없다. 설정에 대한 설명은 “WebtoB 관리자 안내서”의 “3.3. NODE 절”을 참고한다.
HTL과 HTH가 통신할 때 사용되는 소켓 버퍼 크기(SendBuffer와 ReceiveBuffer)를 설정할 수 있는 기능을 추가하였다. 설정하지 않을 경우 OS의 기본값을 사용한다.
[예 17.13] HtlHthSendSocketBufferSize, HtlHthRecvSocketBufferSize 설정 방법
*NODE
webmain WEBTOBDIR = "/usr/local/webtob",
...
HtlHthSendSocketBufferSize = 0
HtlHthRecvSocketBufferSize = 0
설정에 대한 설명은 “WebtoB 관리자 안내서”의 “3.3. NODE 절”을 참고한다.
관련이슈 : IMS-42176
정적 파일의 요청을 처리하는 경우 /WEB-INF/로 접근을 제한하는 설정을 추가하였다.
HtmlsForbidsWEBINF=Y 설정을 하거나 설정을 하지 않을 경우, Request URL에 /WEB-INF/ 경로가 포함되어 있으면 403 Forbidden 응답을 보내게 된다.
[예 17.14] HtmlsForbidsWEBINF 설정 방법
NODE 절에 설정을 하며 기본값은 Y이다.
*NODE
webmain WEBTOBDIR = "/usr/local/webtob",
...
HtmlsForbidsWEBINF = Y #default
설정에 대한 설명은 “WebtoB 관리자 안내서”의 “3.3. NODE 절”을 참고한다.
관련이슈 : IMS-44969
클라이언트의 요청이 있는 경우 WebtoB에서 처리하는 과정을 기록하는 기능을 추가하였다.
요청에 대한 로그 확인 내용은 Access log 내용 중 마지막에 기록된다.
TraceAccessLog 설정에 의해 기록되는 시점은 다음과 같다.
Client 요청이 WebtoB의 HTH에 도착한 시점
ARRIVED로 기록
HTH가 처리하는 서버로 전달하는 시점
SENT-TO-SERVER <SvrType> <확장자> 로 기록
Queuing이 되는 시점
QUEUED <SvrType> <확장자> 로 기록
기존 Access Log에 기록되는 내용 이외에 TraceAccessLog 설정을 통해 기록되는 Log는 LogFormat이 Default로 정해져 있다.
해당 옵션은 디버깅 용도로만 사용하도록 권장한다.
[예 17.15] TraceAccessLog 설정 방법
*NODE
webmain WEBTOBDIR = "/usr/local/webtob",
...
TraceAccessLog = Y
TraceAccessLog 설정 시 Access Log의 내용은 다음과 같다. 7de70002 내용은 Request 고유 번호이다.
127.0.0.1 [03/Dec/2009:15:10:47 +0900] "GET /test.html HTTP/1.1" 7de70002 ARRIVED 127.0.0.1 [03/Dec/2009:15:10:47 +0900] "GET /test.html HTTP/1.1" 7de70002 SENT-TO-SERVER HTML html 127.0.0.1 [03/Dec/2009:15:10:47 +0900] "GET /test.html HTTP/1.1" 7de80002 ARRIVED 127.0.0.1 [03/Dec/2009:15:10:47 +0900] "GET /test.html HTTP/1.1" 7de80002 QUEUED HTML html 127.0.0.1 - - GET /test.html HTTP/1.1 200 68 7de80002 127.0.0.1 - - GET /test.html HTTP/1.1 200 68 7de70002
설정에 대한 설명은 “WebtoB 관리자 안내서”의 “3.12. LOGGING 절”을 참고한다.
관련이슈 : IMS-44753
클라이언트의 요청 헤더에 설정값이 없는 경우 접근을 차단하는 기능을 추가하였다.
Reqeust Header에 AllowIf, DenyIf에 설정한 Header와 내용이 없다면 ACCESS 설정을 적용하게 된다.
기존 Allow, Deny의 경우 IP만 설정이 가능하였다.
해당 설정을 사용하면 무단링크를 방지할 수 있다.
[예 17.16] AllowIf 설정 방법
AllowIf에 대한 설정이 Request Header에 있으면 요청을 허용하는 설정이다.
*ACCESS
access1 Order="deny,allow", Deny="all",
AllowIf = "Referer http://www.tmax.co.kr/",
AllowIf = "Referer http://www.webtob.co.kr/"
[예 17.17] DenyIf 설정 방법
DenyIf에 대한 설정이 Request Header에 있으면 요청을 거부(403 Forbidden)하는 설정이다.
*ACCESS
access1 Order="allow,deny", Allow="all",
DenyIf = "Referer http://www.tmax.co.kr/",
DenyIf = "Referer http://www.webtob.co.kr/"
설정에 대한 설명은 “WebtoB 관리자 안내서”의 “3.13. ACCESS 절”을 참고한다.
관련이슈 : IMS-46677
기존 Flow Control 방식을 개선하였다. 예전 Flow Control의 경우 Delay Time이 길어 요청 처리가 느려지는 현상이 있었다.
기본값 사용 시 개선된 Flow Control이 설정된다.
[예 17.18] UseOldServerFlowControl 설정 방법
*NODE
webmain WEBTOBDIR = "/usr/local/webtob",
...
UseOldServerFlowControl = N #default
설정에 대한 설명은 “WebtoB 관리자 안내서”의 “3.3. NODE 절”을 참고한다.
관련이슈 : IMS-52287
URI 절과 EXT 절에 Priority 항목 설정을 추가하였다.
Priority 설정은 특정 Server의 Queue에서 대기하고 있는 Request 중 다음에 서비스될 Request를 결정할 때 적용된다.
Priority의 처리하는 과정은 다음과 같다.
Queue에 대기하고있는 요청 중 Priority 설정이 높은 서비스를 최대 10개까지 처리
그 다음 Priority 설정이 높은 서비스를 1개 처리
1번과 2번의 과정이 반복되어 2번에 처리되는 서비스가 10개가 되면 1번과 2번의 다음 순서의 Priority 설정된 서비스가 1개 처리된다.
[예 17.19] URI 절 Priority 설정 방법
*URI pri10 Uri = "/pri10/", SvrType=JSV, SvrName=MyGroup, Priority=10 pri90 Uri = "/pri90/", SvrType=JSV, SvrName=MyGroup, Priority=90
[예 17.20] EXT 절 Priority 설정 방법
*EXT jsp10 MimeType = "application/jsp", SvrType = JSV, Priority=10 jsp90 MimeType = "application/jsp", SvrType = JSV, Priority=90
설정에 대한 설명은 “WebtoB 관리자 안내서”의 “3.9. URI 절”과 “WebtoB 관리자 안내서”의 “3.15. EXT 절”을 참고한다.
관련이슈 : IMS-36520
URI 절과 EXT 절에 정규 표현식으로 설정할 수 있는MATCH 패턴 설정을 추가하였다. URI 절에는 prefix, exact, fn, regexp의 패턴이 있으며, EXT 절에는 prefix, exact, regexp이 있다.
[예 17.21] URI 절 MATCH 설정 방법
*URI
uricgi Uri = "/cgi-bin/", SvrType = CGI
uriexact URI = "/", MATCH = "exact", SVRTYPE = HTML
uriregexp URI = "/reg[a-zA-Z]{3}/reg.+", MATCH = "regexp", SVRTYPE = HTML
uripre URI = "/", MATCH = "prefix", SVRTYPE = JSV
urifn URI = "/uri/*/*/" , MATCH = "fn", SVRTYPE = CGI
[예 17.22] EXT 절 MATCH 설정 방법
*EXT
jsp MimeType = "application/jsp", SvrType = JSV
exact MimeType = "text/html", SvrType = HTML, MATCH="exact"
regexp MimeType = "text/html", SvrType = HTML,
MATCH="regexp", REGEXP="regexp.*"
prefix MimeType = "application/jsp", SvrType = JSV, MATCH="prefix"
설정에 대한 설명은 “WebtoB 관리자 안내서”의 “3.9. URI 절”과 “WebtoB 관리자 안내서”의 “3.15. EXT 절”을 참고한다.
확장자와 MimeTypes을 매핑을 파일을 통해서 설정하는 기능을 추가하였다.
환경 설정 파일에 MimetypesConfig 설정을 하지 않을 경우 mime.types 파일을 기본으로 찾는다.
아래와 같이 EXT 절 Match="regexp" 기능과 같이 사용할 경우, HTML서버가 처리하는 확장자에 대한 MIME-Type을 설정할 때 유용하게 사용할 수 있다.
jsp 이외의 확장자는 HTML서버가 처리하면서 Response Header의 Content-Type 필드에 MIME-Type을 ${WEBTOBDIR}/config/mime.types에 기록된 내용으로 보낸다.
만약 gif의 주석을 풀게 된다면 gif에 대해서는 EXT 절에 설정된 MIME-Type을 사용하게 된다.
[예 17.23] MimetypesConfig 설정 방법
*NODE webmain WEBTOBDIR = "/usr/local/webtob", ... MimetypesConfig = "config/mime.types", ... *EXT #htm MimeType = "text/html", SvrType = HTML #gif MimeType = "image/gif", SvrType = HTML jsp MimeType = "application/jsp", SvrType = JSV other_ext MATCH="regexp", REGEXP=".*", SvrType = HTML
설정에 대한 설명은 “WebtoB 관리자 안내서”의 “3.3. NODE 절”을 참고한다.
관련이슈 : IMS-52637
WebtoB에 연결하고 있는 클라이언트 IP의 통계값을 출력하는 기능을 추가하였다. ci -s를 실행하면 전체 클라이언트 수와 고유 IP(Unique IP)수가 출력된다.
아래의 결과는 하나의 Client가 20번의 요청을 보냈을 때의 결과이다. 아래 결과 중 Clients는 connection을 맺고있는 수이며, Unique IPs는 connection을 맺고 있는 IP의 수이다.
[예 17.24] ci -s 실행화면
$$1 tmaxs4 (wsadm) [2009/12/03:17:46:14]: ci -s Clients Unique IPs ------- ---------- HTH 0 10 1 HTH 1 10 1 All 20 1 $$2 tmaxs4 (wsadm) [2009/12/03:17:46:14]:
관련이슈 : IMS-44456
wsadmin을 실행했을 때 다음 명령을 기다리는 커서 위치에 마지막 명령 실행시간을 출력하도록 하였다. wsadmin을 실행하면 기본적으로 시간을 출력하게 되어 있어 별도의 설정은 없다.
다음은 wsadmin의 실행 초기 화면 및 그 다음 명령을 실행했을 때의 시간 출력 화면이다.
[예 17.25] wsadmin 실행화면
$$1 tmaxs4 (wsadm) [2009/12/03:17:57:58]: st -s HTH 0: RDY ---------------------------------------------------------------------- svc_name count avg cq_count aq_count q_avg status ---------------------------------------------------------------------- htm 0 0.0000 0 0 0.0000 RDY html 0 0.0000 0 0 0.0000 RDY $$2 tmaxs4 (wsadm) [2009/12/03:17:57:59]:
관련이슈 : IMS-44862
Cache에 저장된 요청을 파일 리스트로 출력하는 기능을 추가하였다.
wsadmin을 접속 후 "cachelist"를 입력하면 파일이 생성되며 경로는 다음과 같다.
${WEBTOBDIR}/log/cachelist/
Cache Entry 파일 내용의 예이다. HTH가 다수일 경우 HTH마다 cachelist 파일이 생성된다. 아래의 예의 경우 HTH가 2개이다.
[예 17.26] Cache Entry 파일내용 화면
$$1 tmaxs4 (wsadm) [2009/12/03:06:29:51]: cachelist
Cache contents files are created in /home/webtob2/wb4130_64/log/cachelist/.
Please check the directory.
$$2 tmaxs4 (wsadm) [2009/12/03:06:29:53]: quit
$>ls -al
total 16
drwx------ 2 webtob2 users 4096 ./
drwxrwxr-x 6 webtob2 users 4096 ../
-rw------- 1 webtob2 users 461 cachelist-hth-0-20091203-062728.txt
-rw------- 1 webtob2 users 461 cachelist-hth-1-20091203-062728.txt
관련이슈 : IMS-46663
wscfl를 실행하는 경우 오류는 발생하지 않지만 시스템 운영에 문제가 될 수 있는 경우 경고 메시지를 출력하도록 하였다.
아래의 경고 메시지는 "Log 파일이 날짜형식이 아닐경우", "Port 설정이 1023 이하 번호를 설정한 경우", "MaxUser가 500 이하일 경우"의 예이다. 경고 메시지는 나타나지만 컴파일은 된다.
[예 17.27] wscfl 경고 메시지 화면
$/home/webtob1>wscfl -i config.m CFL0356: Log FileName does not contain format strings. All log messages will be stored in the single log file. If this is not what you want, please use format strings. For example, FileName="log/access_%Y%%M%%D%.log". Log=log1, filename=/home/webtob1/wb4130_32/log/access.log, line=27 CFL0368: Configuration uses privileged listen ports (those below 1024). These ports generally require root privilege. The user may run WebtoB as a superuser, or change the owner of htl to root and enable the setuid (sticky) bit on htl. CFL0369: The node can support only 400 users (connections) using the current configuration. To increase the limit, consider the following. 1. Increase the limit on file descriptors (for example, "ulimit -n") if it is smaller than 1024. 2. Reduce the number of unnecessary servers. 3. Increase the number of HTHs. Current configuration: Number of client handler(HTH) = 1 Supported maximum user per node = 400 Supported maximum user per handler = 400 Successfully created the configuration file (/home/webtob1/wb4130_32/config/wsconfig) for node qpsx3. The host name of the running machine is qpsx3.
관련이슈 : IMS-44974
wsboot를 실행할 때 Syslog에 기록되는 오류일 경우 동시에 콘솔에도 출력하도록 하였다.
관련이슈 : IMS-44964
wsboot를 실행할 때 자동으로 컴파일하는 wsboot -i와 wsboot -c <m file> 기능을 추가하였다.
wsboot -i : http.m 파일을 컴파일 후 boot 한다.
wsboot -c <환경설정 파일> : <환경설정 파일>을 컴파일 후 boot한다.
관련이슈 : IMS-44971
GET, POST 요청을 지원하는 SCGI 기능을 추가하였다. 설정은 URI 절과 EXT 절에 한다.
WebtoB 4.1 SP1 Fix#2에 추가되었던 SCGI의 경우 GET 요청만 지원하였다.
[예 17.28] SCGI 설정 방법
*URI scgiget Uri = "/scgi-get/", SvrType = CGI, SCGI = Y , ScgiServer="127.0.0.1:4000", SvrName = "scgi" scgipost Uri = "/scgi-post/", SvrType = CGI, SCGI = Y , ScgiServer="127.0.0.1:4000", SvrName = "scgi" *EXT get MimeType="text/html", SvrType=CGI, SCGI=Y, ScgiServer="127.0.0.1:4000", SvrName = "scgi" post MimeType="text/html", SvrType=CGI, SCGI=Y, ScgiServer="127.0.0.1:4000", SvrName = "scgi"
설정에 대한 설명은 “WebtoB 관리자 안내서”의 “3.9. URI 절”과 “WebtoB 관리자 안내서”의 “3.15. EXT 절”을 참고한다.
관련이슈 : IMS-25766
FastCGI 애플리케이션을 실행할 수 있는 기능을 추가하였다. SvrType이 CGI일 경우만 동작한다. SERVER 절에는 FastCGI 엔진 설정을 하며, URI 절과 EXT 절에는 사용여부를 설정한다.
[예 17.29] SERVER 절 FastCGI 설정 방법
*SERVER
fcgi SVGNAME = cgig, MinProc = 1, MaxProc = 10, ASQCount = 1,
FcgiKillMaxRequest=10,
FcgiKillTimeOut=10,
FcgiInitEnv="VERBOSITY=10"
[예 17.30] URI 절과 EXT 절에 FastCGI 설정 방법
*URI fcgiuri Uri = "/fcgi-bin/", SvrType = CGI, FCGI = Y , SvrName = "fcgi" *EXT fcgi MimeType="text/html", SvrType=CGI, FCGI=Y, SvrName = "fcgi"
설정에 대한 설명은 “WebtoB 관리자 안내서”의 “3.9. URI 절”과 “WebtoB 관리자 안내서”의 “3.15. EXT 절”을 참고한다.
SSI Include가 포함되어 있는 페이지를 Include하여도 정상동작하는 SSIMaxDepth 기능을 추가하였다.
WebtoB 4.1 SP2 Fix#0 이하 버전과 내부 처리방식이 변경되었다.
[예 17.31] SSIMaxDepth 설정 방법
*NODE
webmain WEBTOBDIR = "/usr/local/webtob",
...
SSIMaxDepth = 16 #default
설정에 대한 설명은 “WebtoB 관리자 안내서”의 “3.3. NODE 절”을 참고한다.
${WEBTOBDIR}/bin 디렉터리에 dbg 바이너리를 모두 삭제하였으며, LOGLEVEL
절을 추가하여 환경설정과 동적설정을 통해
trace 파일 생성(TRACE Level 설정된 경우)이 되도록 변경하였다.
LOGLEVEL은 TRACE, DEBUG, INFO(default), WARN, FATAL이 있으며 TRACE가 가장 낮은 레벨이다.
[예 17.32] 환경설정 파일에 LOGLEVEL 설정 방법
# . : Root를 의미한다. 모든 구성요소를 포함한다. # .hth : HTH # .htl : HTL # .wsm : WSM # .server : 모든 서버들을 포함한다. # .server.htmls : HTMLS # .server.cgis : CGIS # .server.phps : PHPS # .server.ssis : SSIS # .server.filters : FILTERS *LOGLEVEL .hth Level = "trace" .server Level = "info"
[예 17.33] LOGLEVEL 동적 설정 방법
hostname@webtob:/home/webtob>wsadmin --- Welcome to WebtoB Admin (Type "quit" to leave) --- $$1 hostname (wsadm) [2009/11/26:17:15:36]: ll -h Usage: ll loggername -l level | -o options loggername : name of the logger (e.g. .hth) level : TRACE|DEBUG|INFO|WARN|FATAL options : [-]dcR,dcW,dsR,dsW '-' turns off the specified options $$2 hostname (wsadm) [2009/11/26:17:15:38]: ll .hth -l trace Log level is successfully updated. logger=.hth, level=TRACE, options= hostname@webtob:/home/webtob/wb4130_64/log/trace>ls HTH-1394-20091126.trace
설정에 대한 설명은 “WebtoB 관리자 안내서”의 “3.23. LOGLEVEL 절”을 참고한다.
관련이슈 : IMS-52098
WebtoB 4.1 SP2 Fix#0에 추가된 기능이지만 요구사항과 다른 기능으로 판단되어 삭제되었다 .
관련이슈 : IMS-51063
WebtoB 설정을 쉽게 하기 위해 SERVER 절에도 VhostName이 설정 가능하도록 변경하였다.
[예 17.34] SERVER 절 VhostName 설정 방법
*SERVER app1 SVGNAME = jsvg, MinProc = 1, MaxProc = 10, ASQCount = 1, VHOSTNAME = vhost1 app2 SVGNAME = jsvg, MinProc = 1, MaxProc = 10, ASQCount = 1, VHOSTNAME = vhost2
설정에 대한 설명은 “WebtoB 관리자 안내서”의 “3.6. SERVER 절”을 참고한다.
관련이슈 : IMS-44861
WebtoB 설정을 쉽게 하기 위해 URI 절과 EXT 절에 VhostName을 Multi 설정이 가능하도록 변경하였다.
[예 17.35] URI 절 VhoatName 설정 방법
*URI uri1 Uri = "/jsvtest/", Svrtype = JSV, VHOSTNAME="vhost1, vhost2", VHOSTNAME="vhost3" uri2 Uri = "/test/", Svrtype = HTML, VHOSTNAME="vhost1", VHOSTNAME="vhost3" uri3 Uri = "/test/", Svrtype = JSV, VHOSTNAME="vhost2" uri4 Uri = "/uri/", Svrtype = HTML, VHOSTNAME="vhost2,vhost3" uri5 Uri = "/uri/", Svrtype = JSV, VHOSTNAME="vhost1"
설정에 대한 설명은 “WebtoB 관리자 안내서”의 “3.9. URI 절”과 “WebtoB 관리자 안내서”의 “3.15. EXT 절”을 참고한다.
관련이슈 : IMS-44860
보안을 이유로 ServerToken 항목의 기본값을 OFF로 변경하였다.
기존 ServerToken의 기본값은 Manual이었으며, Respose Header에 WebtoB 서버 정보가 나타났다.
ServerToken의 설정이 OFF일 경우에는 Response Header에 Server 정보가 나타나지 않는다.
설정에 대한 설명은 “WebtoB 관리자 안내서”의 “3.3. NODE 절”을 참고한다.
관련이슈 : IMS-44970
Developer License(개발자 라이선스)의 User Check 방식을 Connection 수에서 IP 수로 변경하였다.
Connection Check 방식의 문제는 하나의 요청 페이지에 다수의 이미지가 포함되어 있으면 Connection Full이 발생하게 되었다.
User Check 방식의 경우는 Unique IP로 Check하여 Connection에 영향을 받지 않도록 변경되었다.
개발자 라이선스를 사용할 경우 WebtoB를 boot한 시점부터 접속하기 시작한 IP를 저장하게 되며 5개가 넘으면 reboot을 하기 전까지 6번째 IP는 접속이 불가능하다.
관련이슈 : IMS-35172
${WEBTOBDIR}/docs에 있는 WebtoB 실행 파일 중 HTH와 HTHS를 하나의 HTH로 변경하였다.
이전에는 SSL을 설정 시 실행되는 프로세스는 hths 이름으로 확인되었다.
변경 후 SSL을 설정하여도 hth 이름으로 실행되게 변경되었다.
[예 17.36] SSL 실행 후 프로세스 확인 결과
32528 1 0 09:57 pts/10 wsm -l 0x2 -I webtob1_32527 -b 32527
32529 1 0 09:57 pts/10 htl -l 0x2 -I webtob1_32527 -b 32527
32530 1 0 09:57 pts/10 hth -l 0x2 -I webtob1_32527 -b 32527
32532 1 0 09:57 pts/10 htmls -l 0x2 -I webtob1_32527 -b 32527 -s html
WebtoB 4.1 SP2 Fix#0 버전에 추가된 URLRewrite 항목을 설정하는 경우 wsadmin의 cfg 정보에 출력이되도록 하였다.
관련이슈 : IMS-35950
wscfl를 실행하는 경우 Engine Version Mismatch 오류 메시지를 상세히 출력하여 오류 원인을 찾기 쉽도록 하였다.
[예 17.37] Engine Version Mismatch 메시지 결과
COM0005: Incompatible version found in the compiled configuration file. Compiled configuration file=/home/webtob1/wb4130/config/wsconfig_316, WEBTOBDIR=/home/webtob1/wb4130, configuration version=8.9.21, expected version=51.0.0. Likely cause: the WebtoB version that compiled the configuration file is not the currently executing WebtoB version. Please check the following. 1. WEBTOBDIR is set to the correct version of WebtoB. 2. PATH includes the correct WebtoB bin directory. 3. Re-run wscfl if WebtoB has been upgraded recently.
관련이슈 : IMS-44968
Windows에서는 동작하지 않는 SERVICE 절의 SvcTime 항목을 설정하는 경우 컴파일 오류가 발생하고 에러 메시지는 콘솔에 출력하도록 하였다.
관련이슈 : IMS-43272
Server-Side-Queuing(request-prefetch) 기능을 무시하도록 변경하였다. JEUS의 Server-Side-Queuing 기능을 설정하여도 WebtoB와 연동하는 경우 동작하지 않는다.
Server-Side-queuing(request-prefetch) 에 대한 자세한 설명은 JEUS 6.0의 "JEUS Web Container 안내서" "6.3.4 WebtoB 리스너 설정"을 참고한다.
관련이슈 : IMS-36612
SERVER 절의 Timeout 설정을 삭제하였다.
WebtoB와 JEUS의 연결을 끊기 위해 추가된 기능으로 NotifyClientClose 설정으로 대체가 가능하다.
관련이슈 : IMS-44247
Windows에서 WebtoB DocRoot를 UNC(Universal Naming convention) 방식으로 설정할 경우 Path 인식 오류 현상을 수정하였다.
Windows의 UNC 경로를 WebtoB DocRoot에 설정 시에는 아래의 4가지 설정을 모두 만족하도록 수정하였다.
network-server에 공유 폴더 이름이 shared 이며 공유폴더 안에 dir이라는 디렉터리가 존재할 경우
network-server |---- shared |---- dir
DocRoot = "\\network-server\shared\
DocRoot = "\\network-server\shared
DocRoot = "\\network-server\shared\dir\
DocRoot = "\\network-server\shared\dir
WebtoB 4.1 SP2 Fix#0 이하 버전에서 발생하는 오류 현상이다.
관련이슈 : IMS-42035
Status Code 304의 경우 Expires 설정을 하여도 응답 헤더에 Expires와 Cache_Control이 적용되지 않는 오류를 수정하였다.
Status Code 200의 경우에만 Expires 설정이 적용됬었으며, Status Code 304의 경우에도 적용되도록 수정하였다.
▨ Expires 동작 Http Response Header
HTTP/1.1 304 Not Modified
Date: Thu, 26 Nov 2009 10:20:45 GMT
Connection: Keep-Alive
Keep-Alive: timeout=60
ETag: "0-2a-4b0e55e1"
Cache-Control: max-age=100
Expires: Thu, 26 Nov 2009 10:22:25 GMT
WebtoB 4.1 SP2 Fix#0 이하 버전에서 발생하는 오류 현상이다.
관련이슈 : IMS-39797
JEUS가 처리하는 요청 페이지에서 sendRedirect()를 동작 후 페이지 처리가 완료되지 않으면 WebtoB에서 SSL 내부 동작 오류가 발생하여 400 BadRequest 응답을 하는 현상을 수정하였다.
오류 발생 시나리오
WebtoB가 SSL을 사용하며 Request가 HTTPS요청을 보낸다.
요청 jsp 페이지 내부에 sendRedirect() 함수가 처리되어 302 Redirect를 하게 된다.
요청 jsp 페이지 처리과정이 sendRedirect() 함수완료 후 추가 처리과정이 진행되고 있다.
302 Redirect 된 요청을 Client가 보내게 되면 오류가 발생한다.
WebtoB 4.1 SP2 Fix#0 이하 버전에서 발생하는 오류 현상이다.
관련이슈 : IMS-38602
Vhost의 Port로 1초에 2개 이상의 요청을 보내면 WebtoB에 연결 중인 모든 클라이언트의 Timeout이 설정값과 다르게 동작하는 오류를 수정하였다.
Vhost에 부하 상황이 발생하면 KeepAliveTimeout 및 Timeout 설정값을 초과하는 현상이 발생한다.
WebtoB 4.1 SP2 Fix#0 버전에서 발생하는 오류 현상이다.
관련이슈 : IMS-38877
Vhost에 ErrorDocument에 Http Status Code 403, 413, 414, 500, 503을 설정한 경우 NODE 절의 설정이 적용되는 오류를 수정하였다.
WebtoB 4.1 SP2 Fix#0 이하 버전에서 발생하는 오류 현상이다.
관련이슈 : IMS-36626
DirIndex 페이지의 내용 중 ADDRESS HTML tag 오류를 수정하였다.
Description에 설정한 파일에 작성된 내용 중 1줄의 길이가 256자 이상인 경우 이후 내용이 적용되지 않는 오류를 수정하였다.
WebtoB 4.1 SP2 Fix#0 이하 버전에서 발생하는 오류 현상이다.
관련이슈 : IMS-48612
ExcludeByExt 설정을 엑세스 로그에 설정 후 클라이언트 요청이 2000Byte 이상일 경우 HTH가 비정상 종료가 발생한다.
URL이 512 이상일 경우 WebtoB는 414 Request URI too large를 기록하고 요청을 거절한다.
오류 현상은 엑세스 로그에 기록하는 과정에서 HTH가 비정상 종료하게 된다.
오류 발생 시나리오
WebtoB의 LOGGING 절 엑세스 로그에 ExcludeByExt를 설정한다.
요청 URL의 길이를 2000 byte 이상을 WebtoB로 전달한다.
클라이언트에 414 오류를 전달하고 엑세스 로그에 기록하는 과정에서 오류가 발생한다.
WebtoB 4.1 SP2 Fix#0 버전에서 발생하는 오류 현상이다.
관련이슈 : IMS-54467
특정 플랫폼에서 cl(ClientListen) 옵션의 실행 메시지가 동작과 다르게 출력되는 오류를 수정하였다.
다음은 수정 후 wsadmin에서 cl(ClientListen) 실행 시 결과이다.
* cl : 포트 상태 확인 on 일 경우 : current status is READY off 일 경우 : current status is BLOCK_LISTEN * cl on : port listen 허용 on 일 경우 : client listen is already resumed off 일 경우 : client listen resumed * cl off : port brock on 일 경우 : client listen blocked off 일 경우 : client listen is already blocked
WebtoB 4.1 SP2 Fix#0 이하 버전에서 발생하는 오류 현상이다.
관련이슈 : IMS-42962
HTH가 2개 이상인 경우 ds -a를 실행하면 hth 0에만 명령이 처리되는 오류를 수정하였다.
WebtoB 4.1 SP2 Fix#0 이하 버전에서 발생하는 오류 현상이다.
관련이슈 : IMS-40790
Windows 플랫폼에서 nph-cgi 요청을 처리하는 내부 동작 중 출력 압축을 결정하는 과정에서 오류가 발생하여 출력 압축 Response를 보내는 오류를 수정하였다.
WebtoB는 nph-cgi를 처리하게 되면 출력 압축을 하지 않도록 변경하였다.
WebtoB 4.1 SP2 Fix#0 버전에서 발생하는 오류 현상이다.
관련이슈 : IMS-44447
JEUS 6.0의 WebtoB Listener Suspend 명령을 실행하는 경우 WebtoB가 Suspend된 JSV 서버에 Request를 할당하는 오류를 수정하였다.
JEUS 6.0 연동 시 WebtoB 4.1 SP2 Fix#0 이하 버전에서 발생하는 오류 현상이다.
관련이슈 : IMS-36799
SvrType이 JSV인 경우 URI 절 또는 EXT 절에 설정한 Priority가 적용되지 않는 오류를 수정하였다.
WebtoB 4.1 SP2 Fix#0 이하 버전에서 발생하는 오류 현상이다.
관련이슈 : IMS-36520
SvrChkTime과 JEUS의 <read-timeout> 이 설정되어 있고 JEUS 처리 요청시간이 <read-timeout> 보다 길어질 경우 WebtoB에서 나머지 connection에 SvrChkTime 주기로 ping을 보내지 않는 오류를 수정하였다.
▨ 오류 로그 2008.12.09 00:02:27][1][0_481] [container1-260] [WEB-3338] worker(webtob_seobu2-hth1(210.105.40.202:9901) -w13:Socket[210.105.40.202:9901]) : read request error <<__Exception__>> java.net.SocketTimeoutException: Read timed out ....
WebtoB 4.1 SP2 Fix#0 이하 버전에서 발생하는 오류 현상이다.
관련이슈 : IMS-36927
ISAPI Filter를 이용하여 JEUS에서 보내는 Response에 헤더를 추가할 경우 HTH가 비정상 종료되는 오류를 수정하였다.
WebtoB 4.1 SP2 Fix#0 이하 버전에서 발생하는 오류 현상이다.
관련이슈 : IMS-42403
Reqeust에 같은 헤더가 여러 개인 경우 ISAPI Filter의 GetHeader 처리 중 HTH가 비정상 종료되는 오류를 수정하였다.
WebtoB 4.1 SP2 Fix#0 이하 버전에서 발생하는 오류 현상이다.
관련이슈 : IMS-37302
SHMKEY가 충돌하여도 WebtoB가 실행이 되는 오류를 수정하였다. SHMKEY가 중복되는 경우 WebtoB가 실행이 안되고 오류 메시지는 콘솔에 출력하고 프로세스는 종료하도록 수정되었다 .
▨ 로그내용 Booting WebtoB on node (linuxfc6) Welcome to WebtoB demo system. It will expire on 2009/12/13 Today is 2009/10/15 Starting WSM at Thu Oct 15 02:27:20 2009 [2009/10/15:02:27:20] WSM-29173 F WSM0056: Failed to create shared memory (shmget). SHMKEY=53423, shmsize=71612, type=1 Compiled configuration file=/home/webtob/wb4130/config/wsconfig, WEBTOBDIR=/home/webtob/wb4130/ Please make sure that SHMEMKEY, WEBTOBDIR and PATH are set appropriately. 1. WEBTOBDIR is set to the correct version of WebtoB. 2. PATH includes the correct WebtoB bin directory. 3. Re-run wscfl if WebtoB has been upgraded recently. 4. SHMKEY shared memory segment is not used by another WebtoB instance. errno=17(File exists) BOOT0010: Failed to start process (/home/webtob/wb4130/bin/wsm). exec failed. status=1 errno=10(No child processes)
WebtoB 4.1 SP2 Fix#0 이하 버전에서 발생하는 오류 현상이다.
관련이슈 : IMS-52183
Installer에 포함되는 sample.m 환경설정 파일 이름을 http.m으로 변경하였다.
관련이슈 : IMS-44971
WebtoB 설정을 쉽게 하기 위해 http.m에 HTTP Status 503에 대한 ErrorDocument 설정을 포함하였다.
기본제공하는 환경설정 파일 http.m에 ErrorDocument 설정이 아래와 같이 적용되었다.
*NODE webmain WEBTOBDIR = "/usr/local/webtob", ... ERRORDOCUMENT = "503", ... *ERRORDOCUMENT 503 status = 503, url = "/503.html"
관련이슈 : IMS-44973
Installer 설치 시 WebtoB+Servlet 설치 시에만 추가되는 NODE 절에 JSVPORT 설정을 WebtoB만 설치 시에도 추가되도록 하였다.
기본제공하는 환경설정 파일 http.m에 JSVPORT 설정이 아래와 같이 적용되었다.
*NODE
webmain WEBTOBDIR = "/usr/local/webtob",
...
JSVPORT = 9090,
...
관련이슈 : IMS-44965
WebtoB에 MimetypesConfig 설정이 추가되어 Installer에 기본으로 제공하는 mime.types 파일을 추가하였다.
관련이슈 : IMS-52637
WebtoB에서 사용하는 Open Source Licenses를 ${WEBTOBDIR}/license/oss_licenses에 포함하였다.
oss_licenses 폴더에 포함된 파일 리스트
$ /wb4130_32/license/oss_licenses>ls -l total 44 -rwxrwxr-x 1 webtob1 webtob 11358 2009-12-03 16:06 Apache-LICENSE-2.0.txt -rwxrwxr-x 1 webtob1 webtob 1995 2009-12-03 16:06 BSD-LICENSE.txt -rwxrwxr-x 1 webtob1 webtob 6033 2009-12-03 16:06 OpenSSL-LICENSE.txt -rwxrwxr-x 1 webtob1 webtob 2633 2009-12-03 16:06 PCRE-LICENSE.txt -rwxrwxr-x 1 webtob1 webtob 3288 2009-12-03 16:06 PHP-LICENSE-3.01.txt -rwxrwxr-x 1 webtob1 webtob 1057 2009-12-03 16:06 RSA-LICENSE.txt -rwxrwxr-x 1 webtob1 webtob 1858 2009-12-03 16:06 ZLIB-LICENSE.txt -rwxrwxr-x 1 webtob1 webtob 958 2009-12-03 16:06 oss_licenses.txt
관련이슈 : IMS-53824
WebtoB Installer 설치 후 OS별로 Max FD 변경 방법을 출력하도록 하였다.
OS별 Max FD 변경 방법 출력 문구
[공통] The administrator can set the maximum number of file descriptors as follows. The machine needs a reboot in order for the configuration change to take effect. SUN Solaris ----------- To check the current maximum number of file descriptors: - Run "ulimit -Hn" on the command line. This shows the hard limit. To permanently change the maximum number of file descriptors: - Open "/etc/system" with a text editor. - Add a new line "set rlim_fd_max=8192". 8192 is the new maximum. Change it as necessary. IBM AIX ------- To check the current maximum number of file descriptors: - Run "ulimit -Hn" on the command line. This shows the hard limit. To permanently change the maximum number of file descriptors: - Open "/etc/security/limits" with a text editor. - Add a new line "nofiles_hard = 8192". 8192 is the new maximum. Change it as necessary. HP HP-UX -------- To check the current maximum number of file descriptors: - Run "/usr/bin/ulimit -Hn" on the command line. This shows the hard limit. To permanently change the maximum number of file descriptors: - Run the "sam" tool. - Select "Kernel Configuration". - Set "maxfiles_lim = 8192". 8192 is the new maximum. Change it as necessary. Linux 2.4 and later ------------------- To check the current maximum number of file descriptors: - Run "ulimit -Hn" on the command line. This shows the hard liit. To permanently change the maximum number of file descriptors: - Open "/etc/security/limits.conf" with a text editor. - Add a new line "* hard nofile 65536". 65536 is the new maximum. Change it as necessary.
관련이슈 : IMS-44967