질문&답변
클라우드/리눅스에 관한 질문과 답변을 주고 받는 곳입니다.
리눅스 분류

apache+tomcat 가상 호스트 rewrite 설정

작성자 정보

  • 컴뉴스 작성
  • 작성일

컨텐츠 정보

본문

apache 동적 가상 호스트를 위해 rewrite를 사용했습니다.

구현할 사항은 www.test.com 이라는 기본호스트가 존재하고 동적으로 가상 호스트를 정해 주려 합니다. 이때 user.test.com 으로 들어 오면 www.test.com/main.jsp?id=user 형식으로rewrite 하려 합니다.

문제는 rewrite를 하면 톰캣을 거치지 않고 바로 페이지를 보여준다는 것입니다.

다음은 가상호스트 설정 부분입니다.(httpd.conf)

# 가상 호스트 설정
NameVirtualHost 127.0.0.1

# 기본이 되는 호스트
<VirtualHost 127.0.0.1>
 ServerName
www.test.com
#
#
RewriteEngine on
RewriteRule    ^/~(([a-zA-Z])[a-z0-9]+)
http://$1.test.com [R,L]
#RedirectMatch temp .* 
http://www.test.com/test.html
#
# 다음의 2줄에 대해서 주석을 제거하면 요청한 문서와 DocumentRoot 상에
# 존재하는 문서와 서로 일치하지 않을 경우
#
http://www.test.com/index.html 파일을 보여주도록 되어 있다.
# 따라서 "ErrorDocument 404"의 의미는 없어지며,
# 이 방법 외에, 원한다면 404 에러코드에 대한 문서를 상위의
# 기본 문서(index.html)로 URL 포워딩할 수 있는 방법도 있다.
#
#RewriteCond   D:/home/web1/%{REQUEST_FILENAME} !-f
#RewriteRule   ^(.+)   
http://www.test.com/index.html

</VirtualHost>

<VirtualHost 127.0.0.1>
 ServerName test.com
#
# ServerAlias 지시자를 이용해서 나머지 모든 호스트에 대해서
# 설정한 경우이다.
 ServerAlias *.test.com
 ServerAdmin
admin@test.com
#
# 다음의 설정은
http://test.com을 요청했을 경우에
#
http://www.test.com 호스트로 URL 포워딩한 예이다.
# 이 설정은 필자의 습관이다.
# 굳지 Redirect 지시지를 사용하지 않고 /home/httpd/html/index.html
# 파일을 보이도록 할 수는 있다.
#DocumentRoot /home/httpd/html
#
#Redirect  /
http://www.test.com/test.jsp
#
#
# 가장 핵심적인 설정 부분이다. 그러나 .........T.T
# 불행히도 필자는 이부분에 대해서 자세하게 설명할 실력이 못된다.
# 다만 아파치 제공문서와 [임대호]님 홈페이지를 참고로 했을 뿐입니다.
# 자신의 환경에 맞게 수정하면 무리가 없을듯 합니다.
#
# Virtual User Hosts
RewriteEngine on
RewriteCond   %{HTTP_HOST}         ^[^.]+.test.com$ [NC]
RewriteRule   ^(.+)                %{HTTP_HOST}$1   
#page rewirte
#RewriteRule   ^([^.]+).test.com(.*)
http://www.test.com/test.jsp?rnid=$1
#doc rewrite
RewriteRule   ^([^.]+).test.com(.*) D:/home/web1/test.jsp?rnid=$1
#host rewrite
#RewriteRule   ^([^.]+).test.com(.*) D:/home/web1/index.jsp

#RewriteEngine On
#RewriteCond %{HTTP_HOST} !^www.test.com [NC]
#RewriteCond %{HTTP_HOST} [^.]+.test.com [NC]
#RewriteRule ^([^.]+).test.com(.*)
http://www.test.com/test.jsp?rnid=$1 [R,L]


#
#ErrorLog logs/users.linux.ac.kr-error_log
#CustomLog logs/users.linux.ac.kr-access_log common
# 아래의 두개의 설정은 가상 유저 호스트를 위한 설정이다.
# 즉, 각 가상 유저 호스트의 DocumentRoot에 에러코드문서를
# 모두 만들 필요없이(사용자 몫) 기본 호스트의 에러코드로
# 모두 설정해 주었다.
# ErrorDocument 401
http://www.test.com/401.html
 #ErrorDocument 404 http://www.test.com/404.html
 
</VirtualHost>


page rewirte 방법을 썼을 경우에는 jsp 처리는 잘 하지만 주소표시줄에 url이 변경됩니다.
(user.test.com 으로 나와야 하지만
www.test.com/test.jsp?id=user 로 나오내요)

doc rewrite 방법을 썻을 경우에는 주소표시줄에 user.test.com으로 나오지만 톰캣처리를 하지 못한 jsp 코딩 페이지가 그대로 나오니다.

 

어떻게 처리해야만 할까요? 너무 많은 시도를 해서 어떤걸 시도 했는지도 기억하지 못하내요. 고수님들은 많은 답변 부탁드리겠습니다.

조언이라도 해주시면 너무너무 감사하겠습니다

 

관련자료

댓글 1

kickscar님의 댓글

  • kickscar
  • 작성일
지나가다가.... [PT] 옵션 달면, 아파치 지가 파일이름으로 해석하는 안하고 패쓰해서 JSP 커넥터가 처리하게 합니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,039 명
  • 현재 강좌수 :  35,848 개
  • 현재 접속자 :  100 명