제16장 WebtoB 4.1 SP3 Fix#1

내용 목차

16.1. 신규 기능
16.1.1. DOSBlock
16.1.2. Headers Option
16.1.3. Extension Option
16.2. 추가 기능
16.2.1. ACCESS 절 설정에 hostname 허용
16.2.2. URI 절 Redirect 설정 시 url 사용 여부 결정
16.2.3. VhostName을 여러 개 설정 가능한 기능
16.2.4. URI 절 설정에 ext 설정이 가능한 기능
16.2.5. FlowControl 기능
16.2.6. WebtoB 메모리 사용량 확인 기능
16.2.7. SSI에 POST Method 지원 기능
16.3. 변경 기능
16.3.1. CacheRefresh 기본값 변경
16.3.2. SvrChkTime의 기본값 변경
16.3.3. NodeName을 설정하지 않아도 되도록 변경
16.3.4. ValidHours 규칙 변경
16.3.5. Default Extension은 st –s에서 @를 붙이도록 변경
16.3.6. Windows의 FD를 2048로 변경
16.3.7. Windows Service 실행 시 System Log에 확인 가능하도록 변경
16.3.8. Windows Service 변경
16.4. 버그 패치
16.4.1. 2048 길이 이상의 로그일 때 env=!image 설정 시 버그
16.4.2. UrlRewrite 기능 사용 시 https의 R 옵션 버그
16.4.3. InternalHTMLS에 indexname이 적용되지 않는 버그
16.4.4. Log Level을 Trace로 설정 시 extension이 없는 요청일 경우 HTH가 죽는 버그
16.4.5. Log Level을 Trace로 설정 시 URLRewrite 설정 중 특정 argument가 없는 경우 HTH가 죽는 버그
16.4.6. MimeTypesConfig의 설정 파일 중 한 라인의 길이가 64byte 이상일 경우 HTH가 죽는 버그
16.4.7. Content-Length가 2G 이상일 경우 HTH가 죽는 버그
16.4.8. Content-Length가 0일 경우 HTH가 죽는 버그
16.4.9. BlockListen 설정시 suspend된 Port가 Listen되지 않는 버그
16.4.10. ERRORDOCUMENT 설정 시 무한루프 문제
16.4.11. MimeType 오류 관련 메시지를 HTH에서 로그 메시지를 남기도록 수정
16.4.12. JSESSIONID2로 할 경우 JSESSIONID로 인식되는 버그
16.4.13. HP-UX에서 HostName이 9자 이상이면 8자까지만 인식되는 버그
16.4.14. PipeLine Request 처리 시 서버가 hang 상태가 되는 버그

16.1. 신규 기능

16.1.1. DOSBlock

  • DOSBlock=Y로 설정하면 DoS 공격의 피해를 줄일 수 있다.

    DOSBlock의 설정은 DOSBlockPageCount 또는 DOSBlockSiteCount 설정값만큼 DOSBlockPageInterval 또는 DOSBlockSiteInterval 설정시간 사이에 요청이 올 경우 DOSBlockPeriod 시간동안 해당 IP를 차단하는 기능이다.

    설정할 때 주의할 점은 DOSBlockPageCount 또는 DOSBlockSiteCount 설정이 1일 경우 2로 설정이 되고, 0으로 설정할 경우 DOSBlock을 사용하지 않게 된다.

    [예 16.1] DOSBlock 설정 방법

    NODE 절에 DOSBlock 설정을 한다.

    *NODE
    webmain    WEBTOBDIR = "/usr/local/webtob",
               ...
               DOSBlock = Y,
               DOSBlockTableSize = 3097
               DOSBlockPageCount = 5
               DOSBlockPageInterval = 1
               DOSBlockSiteCount = 50
               DOSBlockSiteInterval = 1
               DOSBlockPeriod = 30
               DOSBlockWhiteList = ""

16.1.2. Headers Option

  • 요청 및 응답에 Header를 추가하는 기능을 추가 하였다. HEADERS 절이 추가되었으며 설정은 NODE 절, VHOST 절, SERVER 절에 HEADERS 절의 설정을 추가한다.

    ACTION에는 addrequest , addresponse 설정만 가능하다.

    [예 16.2] Headers 설정 방법

    *HEADERS
    header1    ACTION = "addrequest",
               FieldName = "testname",
               FieldValue = "testvalue",
               StatusCode = "",
    header2    ACTION = "addresponse"
               FieldName = "headername",
               FieldValue = "headervalue",
               StatusCode = "404,503",
    
    *NODE
    webmain    WEBTOBDIR = "/usr/local/webtob",
               ...
               Headers = "header1,header2"
    
    *VHOST
    vhost1     DOCROOT = "/usr/local/webtob/docs",
               ...
               Headers = "header1"
    
    *SERVER
    htmls      SVGNAME = htmlg,
               MinProc = 2,
               MaxProc = 5,
               Headers = "header1,header2"
    
    


16.1.3. Extension Option

  • EXT 절에 Extension 설정을 추가하였다. URI 절 설정과 같이 여러 개의 Vhost별로 Extension을 설정할 경우 사용한다.

    Match 설정이 최우선이며, regexp일경우 Extension 설정은 무시된다.

    [예 16.3] Extension 설정 방법

    *EXT
    vhtml_ext    Extension = "html", MimeType = "text/html", SvrType = HTML, Vhostname = "vhost2"
    
    

16.2. 추가 기능

16.2.1. ACCESS 절 설정에 hostname 허용

  • ACCESS 절에 IP 이외에 hostname 설정도 가능하도록 하였다.

    hosts에 등록된 hostname을 설정해야 한다.

    [예 16.4] ACCESS 절 hostname 설정 방법

    *ACCESS
    access1    Order = "allow,deny",
               Allow = "all",
               Deny = "hostname"
    
    

16.2.2. URI 절 Redirect 설정 시 url 사용 여부 결정

  • URI 절에 Redirect 설정 동작시 Request url의 사용 여부를 결정할 수 있도록 RedirectNoSub 설정을 추가하였다.

    • N(default)일 경우 Redirect URI를 제외한 url을 뒤에 추가하게 된다.

    • Y일 경우 Redirect URI만 사용한다.

    [예 16.5] URI 절 RedirectNoSub 설정 방법

    *URI
    uri1       Uri = "/redirect1/",  Svrtype = HTML,
               Redirect = "/test/",
               RedirectNoSub = Y
    
    

    설정 후 결과는 다음과 같다.

    ▨ 요청
    http://domain/redirect1/redirect_test.html
    
    ▨ 응답
    location: http://domain/test/
    
    

16.2.3. VhostName을 여러 개 설정 가능한 기능

  • SVRGROUP, SERVER, DIRECTORY, REVERSEPROXY 절에 vhostname을 여러 개 설정 가능하도록 하였다.

    이전 버전의 경우 URI 절과 EXT 절에만 가능하였다.

    [예 16.6] VhostName 설정 방법

    *SVRGROUP
    svrgroup1  SVRTYPE = HTML,
               VhostName = "vhost1,vhost2"
    
    *SERVER
    server1    SVGNAME = svrgroup1,
               VhostName = "vhost1,vhost2"
    

16.2.4. URI 절 설정에 ext 설정이 가능한 기능

  • URI 절에 Ext 절의 설정을 확인할 수 있는 기능을 추가하였다.

    Ext, GotoEXT(default N), StopIfNoEXT(default Y) 옵션이 추가되었다.

    • GotoEXT 설정은 EXT 절을 확인할지 여부를 결정한다.

    • StopIfNoEXT 설정은 GotoEXT=Y일 경우 적용되며, EXT 절에 해당 사항이 없을 경우 해당 URI를 적용할지 여부를 결정한다.

      부가적으로 아래 예를 참고하면, uri2에 대한 요청에 EXT 절에 해당 사항이 없을 경우 그 이후 URI인 uri3을 확인하게 된다. uri1에 대한 요청일 경우는 EXT 절에 해당 사항이 없을 경우 uri1의 SvrType으로 처리하게 된다.

    • EXT 설정은 해당 EXT설정만 SvrType으로 처리하게 된다.

      부가적으로 아래 예를 참고하면, uri4에 대한 요청에 gif 확장자일 경우 SvrType을 HTML로 처리하게 된다. 아닐 경우에는 다음 uri 설정으로 넘어간다.

    [예 16.7] Uri 절 GotoEXT, StopIfNoExt 설정 방법

    *URI
    uri1       Uri = "/jsvtest/", SvrType = JSV, GotoEXT = Y, 
               GotoEXT = Y, StopIfNoEXT = Y
    uri2       Uri = "/", SvrType = JSV, 
               GotoEXT = Y, StopIfNoEXT = N
    uri3       Uri = "/", Svrtype = JSV

    [예 16.8] Uri 절 EXT 설정 방법

    *URI
    uri4       Uri = "/jsvtest/common/", SvrType = HTML,
               Ext = "gif,jpg"
    uri5       Uri = "/", Svrtype = JSV

16.2.5. FlowControl 기능

  • Client와 CGI,PHP,JSV 프로세스 간의 FlowControl 기능을 추가하였다.

    FlowControl을 사용하면, Client의 네트워크 속도가 느릴 경우에 메모리가 증가하는 현상이 발생하지 않는다.

    설정은 FlowControlCGISToClient( default Y ), FlowControlClientToJEUS( default Y ) 두 가지이다. FlowControlCGISToClient는 CGIS와 PHPS에 대한 설정이며, FlowControlClientToJEUS는 JEUS에 대한 설정이다.

    설정값이 N일 경우 FlowControl을 사용하지 않게 된다.

    [예 16.9] FlowControl 설정 방법

    *NODE
    webmain    WEBTOBDIR = "/usr/local/webtob",
               ...
    #           FlowControlCGISToClient = Y, #default Y
    #           FlowControlClientToJEUS = Y  #default Y
    

16.2.6. WebtoB 메모리 사용량 확인 기능

  • WebtoB HTH의 메모리 사용량 확인 기능을 추가하였다.

    DebugHTHMemory=Y 설정 후 wsadmin에서 hthmem을 실행하게 되면, $WEBTOBDIR/log/hthmem 디렉터리에 파일로 기록하게 된다.

    wsadmin에서 st -h 실행 시 Current memory use, Max. memory use 정보도 확인이 가능하다.

    [예 16.10] DebugHTHMemory 설정 방법

    *NODE
    webmain    WEBTOBDIR = "/usr/local/webtob",
               ...
               DebugHTHMemory=Y (default N)
    

16.2.7. SSI에 POST Method 지원 기능

  • SSI에 POST Method를 지원하게 하여 GET Method만 지원하던 문제를 해결하였다.

    SSI에서 POST Method 처리 시 POST Data는 사용이 불가능하다.

16.3. 변경 기능

16.3.1. CacheRefresh 기본값 변경

  • CacheRefresh의 기본값을 0에서 3600(초)으로 변경하였다.

    변경된 설정은 CacheRefreshImage, CacheRefreshHtml, CacheRefreshDir 이다.

    [예 16.11] CacheRefresh 변경 내용

    CacheRefreshImage = 3600,      # (sec.),
    CacheRefreshHtml = 3600,       # (sec.),
    CacheRefreshDir = 3600,        # (sec.),

    * 관련이슈 : IMS-45182

16.3.2. SvrChkTime의 기본값 변경

  • SvrChkTimeout의 기본값을 0에서 60으로 변경하였다.

    SvrType이 JSV만 해당된다.

    [예 16.12] SvrChkTime 변경 내용

    SvrChkTime(sct) = 60,

  • 관련이슈 : IMS-57510

16.3.3. NodeName을 설정하지 않아도 되도록 변경

  • Vhost와 SvrGroup에 NodeName을 설정하지 않아도 wscfl이 되도록 변경하였다.

    NodeName 설정이 되어있으면 아래와 같은 경고 메시지가 나타나면서 wscfl이 된다.

    [예 16.13] NodeName 설정이 있을 경우 경고 메시지 내용

    CFL0445: VHOST NodeName is no longer necessary. You can remove it. line=23 
    CFL0446: SVRGROUP NodeName is no longer necessary. You can remove it. line=27 

16.3.4. ValidHours 규칙 변경

  • ValidHours의 규칙을 System Time의 00시를 기준으로 생성하도록 변경하였다.

    [예 16.14] ValidHours 변경 내용

    ▨ 설정
    ValidHours = 6
    ▨ System Time
    1. 10시 - 생성
    ▨ 이전 규칙
    accesslog_20101000 # 10시로 생성
    ▨ 변경 규칙
    accesslog_20100600 # 06시로 생성 

  • 관련이슈 : IMS-60349

16.3.5. Default Extension은 st –s에서 @를 붙이도록 변경

  • EXT 절에 설정하지 않아도 Default로 생성되는 Extension에 @를 붙이도록 변경하였다.

    Default Extension은 EXT 절에 설정하지 않아도 설정된 Svrtype에 의해 자동으로 생성된다.

    Svrtype이 HTML인 경우에는 html, JSV인 경우에는 jsp, CGI인 경우에는 cgi, PHP인 경우에는 php이다.

    [예 16.15] Default Extension 변경 내용

    ▨ st -s
    HTH 0: RDY
       ---------------------------------------------------------------------- 
       svc_name        count    avg   cq_count  aq_count  q_avg   status 
       ---------------------------------------------------------------------- 
       @cgi                0   0.0000        0         0  0.0000   RDY 
       uri1                0   0.0000        0         0  0.0000   NRDY 
       @php                0   0.0000        0         0  0.0000   RDY 
       @jsp                0   0.0000        0         0  0.0000   NRDY 
       @html               0   0.0000        0         0  0.0000   RDY 

16.3.6. Windows의 FD를 2048로 변경

  • Windows 플랫폼 바이너리의 FD를 1024에서 2048로 변경하였다.

    [예 16.16] Windows FD 변경 내용

    WebtoB 4.1 SP 3 Fix #1 Windows_x86 FD2048
    FD2048

  • 관련이슈 : IMS-56280

16.3.7. Windows Service 실행 시 System Log에 확인 가능하도록 변경

  • Windows Service 실행 시 Console 실행과 구분이 되도록 하였다.

    System Log 첫 라인에 "BOOT request from <Service Name>"이 출력되도록 하였다.

    [예 16.17] Service 실행시 System Log 변경 내용

    [2011/00/00:00:00:00] WSM-4316 I WSM0150: BOOT request from WebtoB.

  • 관련이슈 : IMS-44972

16.3.8. Windows Service 변경

  • Windows 플랫폼의 Service 등록 명령어를 변경하였다.

    webtob_service.exe를 통해 등록 및 삭제를 하게된다.

    [예 16.18] Windows Service help 내용

    C:\TmaxSoft\WebtoB4.1\bin>webtob_service.exe -h
    webtob_service.exe -create|-delete [options...]
    -create            Create a new WebtoB service
    -delete            Delete an existing WebtoB service
    
    Options common to -create and -delete:
    -name <service>    WebtoB service name.
                       If not specified, use "WebtoB".
    
    Options specific to -create:
    -webtobdir <path>  WebtoB base directory.
                       If not specified, use environment variable WEBTOBDIR.
    -wsboot-opt <opt>  Override default wsboot options.
    -wsdown-opt <opt>  Override default wsdown options.
    
    -webtobdir, -wsboot-opt, -wsdown-opt are stored in Windows service
     registry. The WebtoB administrator can modify them to change service
     configuration.
    
    -h                Print usage and quit.
    
    <Examples>
    Creating services:
    webtob_service.exe -create
      Creates service "WebtoB" using WEBTOBDIR as the WebtoB path and
      default wsboot, wsboot options
    webtob_service.exe -create -name "WebtoB-site1" -webtobdir "c:\webtob1"
      Creates service "WebtoB-site1" for WebtoB installed in "c:\webtob1"
    webtob_service.exe -create -name "WebtoB-site2"
                       -wsboot-opt "-f site2_config"
                       -wsdown-opt "-z -f site2_config"
      Creates service "WebtoB-site2" using non-default wsboot, wsdown options
    
    Removing services:
    webtob_service.exe -delete
      Removes service "WebtoB"
    webtob_service.exe -delete -name WebtoB-site1
      Removes service "WebtoB-site1"

    [예 16.19] Windows service 등록 및 삭제 내용

    ▧ service 등록
    C:\TmaxSoft\WebtoB4.1\bin>webtob_service -create
    WebtoB path="C:\TmaxSoft\WebtoB4.1"
    Service command="C:\TmaxSoft\WebtoB4.1\bin\service_loader.exe"
    Service log="C:\TmaxSoft\WebtoB4.1\bin\service-WebtoB.log"
    wsboot command="wsboot -N WebtoB"
    wsdown command="wsdown -z -N WebtoB"
    Trying to create service WebtoB...
    Successfully installed service WebtoB
    
    ▧ service 삭제
    C:\TmaxSoft\WebtoB4.1\bin>webtob_service -delete
    Trying to remove service WebtoB...
    Successfully deleted service WebtoB.

16.4. 버그 패치

16.4.1. 2048 길이 이상의 로그일 때 env=!image 설정 시 버그

  • 요청 URL의 길이가 2048 byte가 넘을 경우 AccessLog를 기록하는 과정에서 비정상 종료가 발생하였다.

    이 경우 414 Request-URI Too Large 응답을 보내도록 수정하였다.

    참고

    WebtoB 4.1 SP3 Fix#0 이하 버전에서 발생하는 오류 현상이다.

  • 관련이슈 : IMS-55458

16.4.2. UrlRewrite 기능 사용 시 https의 R 옵션 버그

  • URL_Rewrite 설정에 R flag를 이용하여 https로 Redirect할 경우 https를 인식하지 못하고 http 뒤에 url를 붙여 쓰는 문제를 수정하였다.

    오류 발생 현상은 다음과 같다.

    ▨ URL_Rewrite 설정
    RewriteCond %{HTTP_HOST} ^domain:80$
    RewriteRule . https://domain:443/index.html [R,L]
    
    ▨ Redirect Response Header
    HTTP/1.1 302 Found
    Date: Fri, 29 Jan 2010 07:18:31 GMT
    Connection: close
    Location: http://domain:80/https://domain:443/index.html
    Content-Type: text/html
    Content-Length: 140
    

    참고

    WebtoB 4.1 SP2 Fix#0, WebtoB 4.1 SP3 Fix#0 버전에서 발생하는 오류 현상이다.

  • 관련이슈 : IMS-56459

16.4.3. InternalHTMLS에 indexname이 적용되지 않는 버그

  • InternalHTMLS를 설정 후 IndexName 설정이 적용되지 않는 문제를 수정하였다.

    참고

    WebtoB 4.1 SP3 Fix#0 버전에서 발생하는 오류 현상이다.

  • 관련이슈 : IMS-56109

16.4.4. Log Level을 Trace로 설정 시 extension이 없는 요청일 경우 HTH가 죽는 버그

  • Log Level을 Trace로 환경설정 파일에 설정하거나 동적으로 설정할 경우 extension이 없는 요청이 오면 HTH가 죽는 문제를 수정하였다.

    참고

    WebtoB 4.1 SP3 Fix#0 버전에서 발생하는 오류 현상이다.

  • 관련이슈 : IMS-57052

16.4.5. Log Level을 Trace로 설정 시 URLRewrite 설정 중 특정 argument가 없는 경우 HTH가 죽는 버그

  • Log Level을 Trace로 환경설정 파일에 설정 후 URLRewrite의 설정에 2번째 또는 3번째 argument가 없는 경우 HTH가 죽는 문제를 수정하였다.

    ▨ URL_Rewrite 설정
    RewriteCond %{SERVER_PORT} 8410
    RewriteCond %{SERVER_PORT}            <- 3번째 argument가 없는 경우
    RewriteCond %{REQUEST_URI} index.html [OR]
    RewriteRule .                         <- 2번째 argument가 없는 경우

    참고

    WebtoB 4.1 SP3 Fix#0 버전에서 발생하는 오류 현상이다.

16.4.6. MimeTypesConfig의 설정 파일 중 한 라인의 길이가 64byte 이상일 경우 HTH가 죽는 버그

  • MimeTypesConfig 설정 파일 중 한 라인의 길이가 64byte이상일 경우 HTH가 죽는 문제를 수정하였다.

    참고

    WebtoB 4.1 SP3 Fix#0 버전에서 발생하는 오류 현상이다.

  • 관련이슈 : IMS-58146

16.4.7. Content-Length가 2G 이상일 경우 HTH가 죽는 버그

  • Request의 Content-Length가 2G 이상일 경우 HTH가 죽는 문제를 수정하였다.

    이 경우 413 Request Entity Too Large 응답을 보내도록 수정하였다.

    참고

    WebtoB 4.1 SP3 Fix#0 이하 버전에서 발생하는 오류 현상이다.

16.4.8. Content-Length가 0일 경우 HTH가 죽는 버그

  • Request의 Content-Length가 0일 경우 400 Bad Request 응답을 하는 문제를 수정하였다.

    참고

    WebtoB 4.1 SP3 Fix#0 이하 버전에서 발생하는 오류 현상이다.

16.4.9. BlockListen 설정시 suspend된 Port가 Listen되지 않는 버그

  • BlockListen을 설정한 Server가 suspend가 되어 HTL이 Port Block을 하기 전 Port Open 상태가 되면 Port가 Listen되지 않는 문제를 수정하였다.

    참고

    WebtoB 4.1 SP3 Fix#0 이하 버전에서 발생하는 오류 현상이다.

  • 관련이슈 : IMS-59118

16.4.10. ERRORDOCUMENT 설정 시 무한루프 문제

  • ERRORDOCUMENT 설정 시 특정 상황에 무한 루프가 발생하는 상황을 판단하여 Redirect 되지 않도록 수정하였다.

    참고

    WebtoB 4.1 SP3 Fix#0 이하 버전에서 발생하는 오류 현상이다.

  • 관련이슈 : IMS-57759

16.4.11. MimeType 오류 관련 메시지를 HTH에서 로그 메시지를 남기도록 수정

  • MimeType 오류 관련 메시지를 HTH에서만 System Log에 기록하도록 수정하였다.

    기존에는 설정된 Server에서 메시지를 기록하여 불필요한 로그가 발생하였다.

    참고

    WebtoB 4.1 SP3 Fix#0 버전에서 발생하는 오류 현상이다.

  • 관련이슈 : IMS-55433

16.4.12. JSESSIONID2로 할 경우 JSESSIONID로 인식되는 버그

  • JSESSIONID1, JSESSIONID2와 같이 설정할 경우 JSESSIONID로 인식되는 문제를 수정하였다.

    참고

    WebtoB 4.1 SP2 Fix#0, WebtoB 4.1 SP3 Fix#0 버전에서 발생하는 오류 현상이다.

  • 관련이슈 : IMS-57760

16.4.13. HP-UX에서 HostName이 9자 이상이면 8자까지만 인식되는 버그

  • HP-UX 장비에서 HostName이 9자 이상이면 8자까지만 인식되는 문제를 수정하였다.

    특정 API를 사용하여 HostName을 출력하면서 발생한 문제로 기존 ncpu정보 중 HOSTNAME1에서 문제가 발생하였다.

    ncpu의 정보에 HOSTNAME1과 HOSTNAME2로 출력되는 것을 HOST NAME(기존 HOSTNAME2) 하나만 나타나도록 수정하였다.

    참고

    WebtoB 4.1 SP3 Fix#0 이하 버전에서 발생하는 오류 현상이다.

  • 관련이슈 : IMS-56217

16.4.14. PipeLine Request 처리 시 서버가 hang 상태가 되는 버그

  • PipeLine Request를 처리 중 순차적으로 처리가 되지 않는 경우가 발생하게 되는데, 그 순간 처리 중인 서버가 hang 상태가 되는 문제를 수정하였다.

    오류 상태는 문제의 서버가 BRUN으로 보이며 실행 시간이 비정상적으로 높게 나타난다.

    BRUN 상태는 BlockRun으로 처리 도중 클라이언트가 요청을 받아가지 않아 Block 상태임을 뜻하며 오류는 아니다.

    참고

    WebtoB 4.1 SP3 Fix#0 버전에서 발생하는 오류 현상이다.

  • 관련이슈 : IMS-60558