본문 바로가기
Middleware/WebtoB

WebtoB 설정파일 구조 (http.m)

by nxCore 2023. 3. 6.

 

 

WebtoB 설정파일에 어떠한 설정을 할 수 있고 기본적인 구조에 대해 알아보도록 하겠습니다.

가장 기본적인 서비스를 수행할 수 있는 WebtoB 5 버전 설정파일을 가져와봤습니다.

 

[webtob5@CentOS7-WAS1 config]$ cat http.m
*DOMAIN
webtob1

*NODE
CentOS7-WAS1    WEBTOBDIR       = "/sw/webtob5",
                DOCROOT         = "/sw/webtob5/docs",
                PORT            = "80",
                SHMKEY          = 54000,
                HTH             = 1,
                ServiceOrder    = "uri,ext",
                UpperDirRestrict = Y,
                ERRORDOCUMENT   = "400,401,403,404,405,503",
                JSVPORT         = 9900,
                LOGPERM         = 0600,
                LOGGING         = "acc_node",
                ERRORLOG        = "err_node",
                SYSLOG          = "syslog"

*VHOST
v_http          DOCROOT         = "/sw/webtob5/docs",
                HOSTNAME        = "www.nxcore.com",
                HOSTALIAS       = "192.168.1.11",
                PORT            = "80",
                ServiceOrder    = "uri,ext",
                ERRORDOCUMENT   = "400,401,403,404,405,503",
                URLRewrite      = Y,
                URLRewriteConfig = "config/rewrite.conf",
                LOGGING         = "acc_http",
                ERRORLOG        = "err_http"

v_https         DOCROOT         = "/sw/webtob5/docs",
                HOSTNAME        = "www.nxcore.com",
                PORT            = "443",
                ServiceOrder    = "uri,ext",
                ERRORDOCUMENT   = "400,401,403,404,405,503",
                SSLFLAG         = Y,
                SSLNAME         = "ssl1",
                LOGGING         = "acc_https",
                ERRORLOG        = "err_https"

*SSL
ssl_erp         CertificateFile         = "/sw/webtob5/ssl/cert.pem",
                CertificateKeyFile      = "/sw/webtob5/ssl/privkey.pem",
                CertificateChainFile    = "/sw/webtob5/ssl/chain.pem",
                CACertificateFile       = "/sw/webtob5/ssl/fullchain.pem",
                PassPhraseDialog        = "file:/sw/webtob5/ssl/passwd",
                Protocols       = "-SSLv2, -SSLv3, -TLSv1, -TLSv1.1, TLSv1.2, TLSv1.3",
                RequiredCiphers = "HIGH:MEDIUM:!SSLv2:!PSK:!SRP:!ADH:!AECDH:!EXP:!RC4:!IDEA:!3DES"

*HTH_THREAD
hth_worker      SendfileThreads         = 4,
                AccessLogThread         = Y,
                SendfileThreshold       = 0,
                WorkerThreads           = 8

*SVRGROUP
g_svrg          SVRTYPE = JSV, VhostName = "v_http, v_https"

*SERVER
svr1            SVGNAME = g_svrg, MinProc = 50, MaxProc = 50
svr2            SVGNAME = g_svrg, MinProc = 50, MaxProc = 50

*URI
u_svr2          Uri = "/hello", Svrtype = JSV, VhostName = "v_http, v_https"
u_svr1          Uri = "/",      Svrtype = JSV, VhostName = "v_http, v_https", GotoEXT = Y

*LOGGING
syslog          Format = "SYSLOG",   FileName = "/sw/webtob5/log/system/system_%Y%%M%%D%.log", Option = "sync"
acc_node        Format = "COMBINED", FileName = "/sw/webtob5/log/node/access_%Y%%M%%D%.log", Option = "sync"
err_node        Format = "ERROR",    FileName = "/sw/webtob5/log/node/error_%Y%%M%%D%.log", Option = "sync"

acc_http        Format = "COMBINED", FileName = "/sw/webtob5/log/http/access_%Y%%M%%D%.log", Option = "sync"
err_http        Format = "ERROR",    FileName = "/sw/webtob5/log/http/error_%Y%%M%%D%.log", Option = "sync"
acc_https       Format = "COMBINED", FileName = "/sw/webtob5/log/https/access_%Y%%M%%D%.log", Option = "sync"
err_https       Format = "ERROR",    FileName = "/sw/webtob5/log/https/error_%Y%%M%%D%.log", Option = "sync"

*ERRORDOCUMENT
400             status = 400, url = "/error.html"
401             status = 401, url = "/error.html"
402             status = 402, url = "/error.html"
403             status = 403, url = "/error.html"
404             status = 404, url = "/error.html"
405             status = 405, url = "/error.html"
503             status = 503, url = "/error.html"

*EXT
jsp             SvrType = JSV,  MimeType = "application/jsp", Options = "unset"
htm             SvrType = HTML, MimeType = "text/html"
html            SvrType = HTML, MimeType = "text/html"
css             SvrType = HTML, MimeType = "text/css"
js              SvrType = HTML, MimeType = "application/x-javascript"
txt             SvrType = HTML, MimeType = "text/plain"
ico             SvrType = HTML, MimeType = "image/x-icon"
gif             SvrType = HTML, MimeType = "image/gif"
jpg             SvrType = HTML, MimeType = "image/jpeg"
png             SvrType = HTML, MimeType = "image/png"

 

 

*DOMAIN, *VHOST, *URI 와 같이 앞에 ' * ' 문자를 붙여서 선언하는 부분을 '절' 이라고 합니다.

*VHOST 는 VHOST 절, *URI 는 URI 절 이라고 부릅니다.

 

DOMAIN, NODE, HTH_THREAD 절은 설정파일에 반드시 선언되어 있어야 하며,

기본적인 서비스를 정상적으로 수행하려면 위에서 예시로 보여드린 각 절들이 선언되어 있는 것이 좋습니다.

 

' * ' 문자를 써서 절의 시작을 선언한 경우, 다음 ' * ' 문자가 사용되어 다른 절이 선언되기 전까지 해당 절의 설정으로 인식합니다.

각 절의 순서는 정해져 있지 않으므로 순서 상관 없이 원하는 위치에 절을 선언할 수 있습니다.

절은 2회 이상 선언할 수 있으나, 설정파일의 가독성을 위해 1회만 선언하는 것이 좋습니다.

 

 

[*DOMAIN 절]

DOMAIN 절은 멀티 도메인 사용 시 설정을 수정하여 사용합니다. (한 서버 내 여러 WebtoB 를 사용하는 등)

잘 사용하지 않는 부분이므로 기본 설정 그대로 사용하시면 됩니다.

 

[*NODE 절]

기본 서비스 설정 및 WebtoB 기능에 대한 설정을 하는 부분입니다.

*NODE 절 에서는 서비스 설정을 하지 않고 *VHOST 절에 설정해서 사용하는 것이 대부분이므로 *NODE 절에서는 서비스를 하지 않고 기본 설정만 해둔다고 보면 되며, WebtoB 메인 기능들에 대한 옵션을 설정하는 부분이라고 보면 됩니다.

*NODE 절에서 기본 동작 설정 (*VHOST 절에 선언하지 않는 옵션들의 기본 설정) 과 WebCache 설정, 버퍼 크기, HTTP/2 사용 설정, 다른 소프트웨어 (WAS 등) 연동 포트 설정 등을 할 수 있습니다.

 

[*VHOST 절]

처음 서버로 요청이 유입되면 어떠한 서비스로 인식 후 처리할 지 설정할 수 있습니다.

DocRoot : VHOST 로 유입된 요청의 기본 Document Root 입니다. 웹 자원 경로를 설정합니다.

HostName(HostAlias) : 사용자가 어떤 도메인 또는 IP 로 서비스를 요청했는지 체크하는 설정입니다.

Port : 서비스 요청을 받을 서버 포트를 설정할 수 있습니다. 미설정 시 80 포트를 사용하며, SSL 사용 설정이 되어 있는 경우 443 포트를 사용합니다.

ServiceOrder : 해당 VHOST 로 유입된 요청을 처리할 때 URI 절 설정을 먼저 처리할 지, EXT 절 설정을 먼저 처리할 지 설정할 수 있습니다.

 

[*SSL 절]

SSL/TLS 사용을 위한 인증서 설정 및 Protocol, Cipher Suite 를 설정할 수 있습니다.

 

[*HTH_THREAD 절]

요청이 WebtoB 에서 처리될 때, 처리 프로세스 인 HTH 프로세스의 Thread 를 어떠한 방식으로 운영할 지 설정할 수 있습니다.

Static Resource (정적 자원) 를 처리하는 경우, Compression (압축) 응답에 대해 *HTH_THREAD 절에서 설정할 수 있습니다.

대부분 기본 설정으로 운영합니다.

 

[*SVRGROUP 절]

서비스 처리를 수행하는 서버들의 그룹 설정입니다.

해당 서버 그룹이 어떤 타입 (JSV, HTML 등) 으로 처리할 지 설정할 수 있고, 어떤 VHOST 와 연결될 지 설정할 수 있습니다.

로드밸런스 설정을 추가하여 특정 서버를 백업 서버로 지정하여 운용하거나, WAS 서버간 성능차이가 있는 경우 로드밸런스 비율을 조정하여 특정 WAS 에 부하를 더 분배하는 식으로 처리 설정을 할 수 있습니다.

 

[*SERVER 절]

요청에 대한 처리를 수행할 실제 서버를 설정할 수 있습니다.

서버가 어떤 서버그룹에 소속되어 있을지, 몇 개의 커넥션을 사용할 지 설정할 수 있으며, 부하가 심할 경우 유지할 최대 요청 큐 크기 등을 설정할 수 있습니다.

*SERVER 절에 설정된 서버 이름을 JEUS 와 연동할 때 사용합니다.

 

[*URI 절]

클라이언트가 요청한 URI 경로에 대해 어떤 처리를 할 지 설정할 수 있습니다.

특정 경로로 요청되었을 경우, 특정 서버에서 처리하도록 설정하거나, 다른 주소로 Redirect 하도록 설정을 할 수 있습니다.

GotoEXT 옵션이 Y 로 설정된 경우, EXT 절에 설정된 사항들을 먼저 체크하게 됩니다.

 

[*EXT 절]

클라이언트가 요청한 확장자에 대해 어떤 처리를 할 지 설정할 수 있습니다.

특별한 구성 요건이 있는 경우를 제외, *EXT 절 설정에는 Static Resource (정적 자원) 의 확장자를 선언, SvrType 을 HTML 로 설정하여 WebtoB 에서 처리할 확장자들을 설정하게 됩니다. 

** 주의 : jsp 확장자에 대한 설정이 없는 경우, 기본 jsp 처리 설정이 자동으로 추가 설정되므로, jsp 확장자를 설정 후 Options = "unset" 을 추가해서 *EXT 절에서 jsp 확장자가 처리되지 않도록 설정해야 합니다.

 

[*LOGGING 절]

로그에 대한 설정을 할 수 있습니다.

NODE 와 각 VHOST 들의 Access 로그, Error 로그 포맷, 로그 생성 경로를 설정할 수 있습니다.

SYSLOG 포맷으로 설정된 로그는 WebtoB 동작에 대한 로그를 기록합니다.

 

[*ERRORDOCUMENT 절]

HTTP 처리 오류가 발생했을 때, 각 HTTP Code 별 응답할 주소를 설정할 수 있습니다.

WebtoB 에서 오류가 발생했을때만 적용되는 설정임을 주의해야 합니다.

 

댓글