# NOTE : This is a template to configure mod_weblogic.
LoadModule weblogic_module "${PRODUCT_HOME}/modules/mod_wl_ohs.so"
# This empty block is needed to save mod_wl related configuration from EM to this file when changes are made at the Base Virtual Host Level
<VirtualHost *:8080>
ServerName www.testofm.com
DocumentRoot "/home/weblogic/ohs/ohs12214/jhhandomain/config/fmwconfig/components/OHS/ohs1/htdocs/test"
ErrorDocument 404 /error/error.html
<Directory "/home/weblogic/ohs/ohs12214/jhhandomain/config/fmwconfig/components/OHS/ohs1/htdocs/test">
AllowOverride None
Require all granted
</Directory>
<Location /test>
# SetHandler weblogic-handler
WebLogicCluster 192.168.56.109:8001,192.168.56.109:8002
MatchExpression *.jsp
RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^OPTIONS
RewriteRule .* - [F]
RewriteRule ^/(.*)$ http://www.testofm.com:8080/test/test.html [R,L]
</Location>
</VirtualHost>
<VirtualHost *:8080>
ServerName www.realofm.com
DocumentRoot "/home/weblogic/ohs/ohs12214/jhhandomain/config/fmwconfig/components/OHS/ohs1/htdocs/test2"
ErrorDocument 404 /error/error.html
<Directory "/home/weblogic/ohs/ohs12214/jhhandomain/config/fmwconfig/components/OHS/ohs1/htdocs/test2">
AllowOverride None
Require all granted
</Directory>
<Location /real>
SetHandler weblogic-handler
WebLogicCluster 192.168.56.109:8001
MatchExpression *.jsp
</Location>
</VirtualHost>
1. 서버 분기 (ServerName 기준)
- 서버 분기의 경우 <VirtualHost> 사용하여 ServerName 기준으로 나누는 방법을 사용
그 외, port, ip 등으로도 서버 분기가 가능하지만, ServerName이 가장 보편적이다.
같은 8080 포트를 사용하는 OHS instance 내에 VirtualHost를 2개 생성했다.
그리고 각각 ServerName이 testofm.com, realofm.com 일때로 분기하였다.
현재 OHS와 연동한 WebLogic의 경우, context root를 /test, /real 로 사용하는 2개의 application을 배포하였다.
위 2개의 app이 각각의 ServerName을 가지도록 분기한 옵션이다.
각각의 어플리케이션에 존재하는 index.html을 같은 포트를 사용하지만 다른 DNS를 통해 각기 다르게 호출 가능하다.
물론 각기 다른 DNS를 httpd.conf와 Winodws host 파일에 등록하는 것이 우선적으로 적용되어야 될 부분이다.
2. DocumentRoot & ErrorDocument
- DocumentRoot의 경우 기본적으로 httpd.conf의 설정을 따라가지만, VirtualHost 안에 따로 doc root를 설정하여 다르게 설정할 수 있다.
또한 ErrorDocument의 경우 404 error에 대해 DOC_ROOT/ 밑의 설정 파일을 읽고 들어가게 설정한다.
## 주의할 점
=> 해당 404 error는 WEB에서 처리하는 404 error page에 한한다. 만약 MatchExpression에 걸리거나, Weblogic-handler를 써서 WAS에서 해당 페이지가 처리되게 설정한 경우, web.xml의 Error page를 따른다.
3. <Directory>
- 디렉토리 제어문 : 해당 디렉토리에 대한 설정
=> Require all granted : 모든 access 허용
=> AllowOverride : 클라이언트의 디렉토리 접근 제어에 관련한 설정 (None : 허용 안함)
4. RewriteRule (redirection)
- RewriteEngine : rewrite관련 엔진 활성화 여부
- RewriteCond : rewriteRule에 적용될 조건을 정의
- RewriteRule : rewrite 규칙 정의
ex >
RewriteCond %{REQUEST_METHOD} ^OPTIONS => HTTP method 관련 설정 (OPTIONS / TRACE / PUT/ DELETE / ...) => RewriteCond (string) (pattern/instruction) [flag] 형태 RewriteRule .* - [F] => flag [F] : forbidden 요청페이지를 403 에러 페이지로 redirect 시킴. 앞에 '-' 붙여서 flag 사용 안함 => RewriteRule (pattern)(substitution) [flag] 형태 RewriteRule ^/(.*)$ http://www.testofm.com:8080/test/test.html [R,L] => flag [R] : 무조건 Redirection 시킴. [L] : last 다음의 rule을 무시하고 종료 => ^ : 문자열의 첫 문(열) => * : 0개 이상의 문자 또는 문자열 => $ : 문자열의 끝 문자(열) + RewriteBase URL-path => 기본 디렉토리를 설정. 이 옵션은 .htaccess 파일 안에서만 동작 RewriteLogLeve [0~9] => Rewrite 실행 로그의 레벨을 지정. 9가 가장 detail RewriteLog [path] => Rewrite 모듈이 실행되는 과정 및 결과에 대한 로그 설정 |
redirect 되는 것을 확인
5. Permanent redirect
ex>
<VirtualHost *:8080> xxxxxxxx </VirtualHost> <VirtualHost *:8081> ~~~~~~~ Redirect permanent / http://127.0.0.1:8080/ => 8081로 호출 들어오는 것들이 다 8080로 redirect (log도 8080 포트 서버에 남음) </VirtualHost> |
Permanent redirect는 RewriteRule <xxx> [R=permanent] 와 같은 옵션이다.
Permanent Redirect의 경우 301 moved permanently의 HTTP 응답 코드를 읽고 들어가기 때문에 영구적인 Redirection이며, RewriteRule의 경우 302 Found HTTP 응답 코드를 읽기 때문에 임시적인 Redirection이다.
## 301, 302 vs 307, 308
각각 임시적, 영구적 redirection 코드이나, 전자는 HTTP method가 GET으로 변경될 수 있을때, 후자는 변경될 수 없을 때 사용되는 HTTP 응답 코드이다.
'WAS & WEB' 카테고리의 다른 글
파일 업로드 용량 제한 (0) | 2022.09.30 |
---|---|
Sticky Session & Cluster (0) | 2022.09.13 |
mpm test (0) | 2022.07.12 |
Session & Cookie (0) | 2022.06.20 |
csp (0) | 2022.06.17 |