티스토리 뷰
본 포스팅은 Apache의 mod_rewrite를 대체한 WebtoB의 URLRewrite에 대해 알아보겠습니다.
URL Rewrite 는 Apache의 mod_rewrite를 WebtoB에 포팅한 기능으로, rule-based URL rewriting 기능을 제공한다.
① Client의 Requtest Header의 URL을 관리자가 목적에 맞게 변경하여 Client에게 응답할 수 있는 기능입니다.
② Apache의 mod_rewrite를 WebtoB에 포팅한 기능으로 rule-based URL rewriting 기능을 제공합니다.
③ 자주 사용되는 조건 설명
조건 |
설명 |
^ |
시작문자가 일치해야 한다. |
$ |
종료문자가 일치해야 한다. |
OR |
RewriteCond 다음에 또 다른 RewriteCond가 있을 경우, 다음 RewriteCond와 logical OR로 조합되도록 설정한다. |
R |
Substitution이 Absolute URL일 경우, hostname이 서버의 호스트와 일치하는 경우에도 강제로 다시 redirect하도록 한다. |
L |
rewriting 과정을 이곳에서 종료하도록 한다. |
1.1.1 WebtoB에서 설정 (맑은고딕/10pt/Bold)
① URLRewrite 기능을 사용하기 위해서는 NODE 절의 'URLRewrite' 항목은 'Y'로 설정되어야 하고 URLRewriteConfig 항목에 Condition과 Rule에 관련된 설정을 해야 합니다.
② 다음은 URLRewrite 기능을 사용하기 위한 NODE 절 설정에 대한 예제입니다.
*NODE
mynode URLRewrite = Y,
URLRewriteConfig = "${WEBTOBDIR}/config/rewrite.conf"
1.1.2 Rewriteconfig
① Rewriteconfig 파일에는 RewriteCond과, RewriteRule을 설정하며, RewriteCond는 rewriting 조건을 명시하고, RewriteRule은 rewriting 동작을 결정합니다.
② RewriteCond 구조
- RewriteCond는 rewriting 조건을 명시하며, 다음과 같은 형식으로 설정한다. TestString과 CondPattern을 매칭하여 조건이 맞을 경우, RewriteRule 설정대로 해당되는 패턴을 교체합니다.
- RewriteCond <TestString> <CondPattern> flags
- <TestString>에는 예약어와 일반 문자열을 사용 할 수 있는데 자세한 내용은 manual을 참고합니다. 대표적으로 host name을 매치 시킬 경우 %{HTTP_HOST} 를 사용합니다.
- <CondPattern> 는 실제로 매칭할 문자를 입력합니다.
- flags 다수의 호스트를 매칭하길 원할 경우 OR을 사용해 다음과 같이 설정 할 수 있습니다.
RewriteCond %{HTTP_HOST} ^host1.* [OR]
RewriteCond %{HTTP_HOST} ^host2.* [OR]
RewriteCond %{HTTP_HOST} ^host3.*
RewriteRule ...
③ RewriteRule 구조
- 사용자 요청이 RewriteCond에 매칭되는 경우, RewriteRule 설정에 의해 사용자 요청 중 Pattern을 Substitution으로 교체합니다.
- RewriteRule <Pattern> <Substitution> flags
- <Pattern> . 은 요청 uri 전체를 Substitution으로 대체합니다.
예를 들어 다음과 같은 상황에서 요청된 www.tmax.com은 www.google.com로 대체됩니다.
RewriteCond %{HTTP_HOST} www.tmax.com$
RewriteRule . www.google.com [L]
- 요청 URI domain:port 인 경우 <Pattern>에 ^/$ 를 통해 “/” 매치해서 redirect 설정을 할 수 있지만 domain:port/uri/ 과 같을 경우 <Pattern>에 “.” 설정하고 뒤에는 Full hostname을 명시해주는 것이 좋습니다.
④ 자세한 내용은 아래 “Apache 2.2 mod_rewrite”를 참고하도록 한다(WebtoB에서 동작하지 않는 기능이 있을 수 있으니 유의해야 합니다.) : http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html
⑤ 아래는 예제관련 링크로 참고하도록 합니다. : http://httpd.apache.org/docs/2.2/misc/rewriteguide.html)
1.1.3 인입된 http request에 대해 https 분기 방법
- domain이 test.co.kr이며, port가 80인 경우 모든 url에 대해서 https://test.co.kr로 분기
- ^test : 첫 문자가 test로 시작
- kr$ : 문자열의 끝이 kr
RewriteCond %{HTTP_HOST} ^test\.co\.kr$
RewriteCond %{SERVER_PORT} 80
RewriteRule . https://test.co.kr%{REQUEST_URI} [L]
1.1.4 특정 URI에 대해 타 URL로 Redirect 처리 방법
- http://test.co.kr/test/ 요청에 대해 , https://test. co.kr/test2/ 로 분기
- ( ) : ( ) 안의 문자 또는 문자열을 그룹으로 묶으며, 이 문자그룹은 $N 의 변수로 활용
- . : 다수의 한 문자
- * : 0개 이상의 문자 또는 문자열- $N : RewriteRule의 패턴 중 N번째 그룹 패턴을 지칭
RewriteCond %{HTTP_HOST} ^test\.co\.kr$
RewriteCond %{SERVER_PORT} 80
RewriteRule /test/(.*) https://test.co.kr/test2/$1 [L]
◇ 설정예제
1. tmax1.tmax.co.kr로 들어오는 요청을 http://www.google.com 로 redirect 할 때 RewriteCond %{HTTP_HOST} ^tmax1.tmax.co.kr$ // 앞에 ^ 뒤에 $ 는 정확한 매칭이 필요할 경우 넣는다. 빼면 이외에도 적용 RewriteRule . http://www.google.com [L] 2. tmax1.tmax.co.kr:26000/ 으로 들어오는 모든 요청에 대해 tmax1.tmax.co.kr:26000/session/index.jsp로 redirect 할 때 RewriteCond %{HTTP_HOST} ^tmax1.tmax.co.kr:26000$ RewriteRule ^/$ /session/index.jsp [R,L] 3. tmax1.tmax.co.kr:26000/session/ 요청에 대해 http://www.google.com 로 redirect 할 때 RewriteCond %{HTTP_HOST} ^tmax1.tmax.co.kr RewriteCond %{SERVER_PORT} 26000$ RewriteCond %{REQUEST_URI} ^/session/$ RewriteRule . http://www.google.com [L] 4. tmax1.tmax.co.kr:26000/session/ 요청에 대해 tmax1.tmax.co.kr:26000/session/index.jsp 로 redirect 할 때 RewriteCond %{HTTP_HOST} tmax1.tmax.co.kr:26000$ RewriteCond %{REQUEST_URI} ^/session/$ RewriteRule . http://tmax1.tmax.co.kr:26000/session/index.jsp [R,L]
* URL Rewrite 설정 시 유용한 Tool (Debug Tool)
1. online에서 사용자가 작성한 URL Rewrite를 검증할 수 있는 사이트 : http://htaccess.madewithlove.be/
2.Chrome 앱에 “RegExp tester“라는 Utility 가 존재합니다.
사용방법은 간단하니 유용하게 사용하시기 바랍니다.
아래 이미지는 htaccess 샘플입니다.
고맙습니다.
'④ 미들웨어 > ⓦ WebtoB' 카테고리의 다른 글
[WEBTOB] 로그 설정가이드 (로그레벨, TraceLog, AccessLog) (0) | 2018.08.07 |
---|---|
[WebtoB] Fast CGI 설정 및 예제 (0) | 2018.08.06 |
[WebtoB] Caching Test (0) | 2018.07.06 |
[WebtoB] 로드밸런싱 테스트 (0) | 2018.07.05 |
[WebtoB] ReverseProxy 로그밸런싱 처리 방법 (0) | 2018.07.04 |
- Total
- Today
- Yesterday
- 마이크로서비스
- nodejs
- JBoss
- API Gateway
- Docker
- Architecture
- aws
- SWA
- 오픈스택
- apache
- OpenStack
- k8s
- webtob
- TA
- openstack token issue
- wildfly
- 아키텍처
- Da
- jeus
- openstack tenant
- SA
- MSA
- git
- 쿠버네티스
- aa
- kubernetes
- JEUS7
- node.js
- 마이크로서비스 아키텍처
- JEUS6
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |