동적 호스트도메인 사용하기 (apache2+tomcat6.0)
Integrator/U-LINUX / 2009. 12. 22. 13:38
멀티도메인(여기서는 호스트도메인)이 가능하게 아파치와 톰캣연동을 하려한다.
예를 들어 aaa.techbug.com 과 bbb.techbug.com 으로 들어와도 톰캣의 하나의 컨텍스트로 넘어오게 하기 위한 목적으로 서버 셋팅을 해야한다.
PHP라면 간단한 일이 되겠지만 톰캣과의 연동을 하려니 상당히 어려운 점이 많다.
팀원(병규야 수고했다..그리고 미안하다.. ^^) 을 시켜 셋팅한 것이지만.. 공유하려 한다.
설정
aaa.techbug.com ---> http://로컬머신/techbug
bbb.techbug.com ---> http://로컬머신/techbug
환경
Ubuntu10 + Apache2 + Tomcat6.0
필요한 모듈 :
mod_proxy,
mod_proxy_balancer,
mod_proxy_http
mod_proxy_html, mod_rewrite
모듈 설치 :
apt-get install libapache2-mod-proxy-html libxml2
설치 모듈을 enable상태로 변경
/etc/apache2/mods-avaliable 에서 확인
a2enmod를 이용한 아파치모듈 활성화
a2enmod proxy,
a2enmod proxy_html,
a2enmod proxy_balancer,
a2enmod rewite,
a2enmod proxy_http
활성화 여부 확인 : /etc/apache2/mods/mods_enables
Apache2 환경설정
1.VirtualHost 등록
/etc/apache2/sites-enabled/000-default에서 VirtualHost를 등록한다
2. 아파치 재시작 :
/etc/init.d/apache2 restart
3. 톰캣 시작(톰캣에 techbug이름으로 프로젝트가 배포되어 있다고 가정)
<VirtualHost *:80>
ServerName techbug.com
ServerAlias techbug.com *.techbug.com
proxyRequests Off
proxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://localhost:8080/techbug/
ProxyPassReverse / /http://localhost:8080/techbug/
</VirtualHost>
http://aaa.techbug.com 입력하고 제대로 나오는지 확인하다
ProxyPass 에 설정 한 대로 톰캣의 주소로 이동하게 되고 index.jsp 가 가장 먼저 읽어진다
Mod_Proxy 설정 정보
ProxyPass를 사용하여 특정 디렉토리를 톰캣에서 처리
ProxyPass /admin/http://localhost:8080/techbug
ProxyPass /user/http://localhost:8080/techbug
ProxyPassMatch : ProxyPassMatch를 이용하여 특정 확장자를 가진 파일을 톰캣에서 처리
ProxyPassMatch ^/.*\.(jsp|do|action)$ http://localhostL8080/
LocationMathch : LocationMathch를 사용하여 접근보안 문제 해결
<LocationMatch “/WEB-INF”>
deny all
</Location>
Tomcat : web.xml
톰캣에서는 별다른 설정은 하지 않고 데이타리소스만 정리하였다.
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
<Resource name="jdbc/NEXFA_DS"
auth="Container"
type="javax.sql.DataSource"
username="유저네임"
password="패쓰워드"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/techbugdb"/>
</GlobalNamingResources>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
<Context path="" docBase="/usr/flowerteam/tomcat-6.0.20/webapps/NexfaWeb" debug="0" reloadable="true">
<Resource name="jdbc/TECHBUG_DS"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
username="유저네임"
password="패스워드"
url="jdbc:mysql://localhost:3306/techbugdb"/>
</Context>
</Host>
www가 안붙은 URL을 자동으로 붙이기
techbug.com 이라는 도메인을 주소창에 입력하였을 때 자동으로 www.techbug.com 으로 접속 시키는 방법이다.
<VirtualHost *:80>
ServerName techbug.com
ServerAlias www.techbug.com
DocumentRoot /home/techbug/public_html/
ErrorLog logs/error_log
CustomLog logs/sinvi-access_log combined env=!nosave
</VirtualHost>
이라는 가상 호스트 구문이 있을것이다. www 를 자동으로 붙이는 방법은 간단하다.위의 구문아래에 똑같은 구문을 복사하여 붙여 넣는다.
<VirtualHost *:80>
ServerName techbug.com
ServerAlias www.techbug.com
DocumentRoot /home/techbug/public_html/
ErrorLog logs/error_log
CustomLog logs/sinvi-access_log combined env=!nosave
</VirtualHost>
<VirtualHost *:80>
ServerName techbug.com
ServerAlias www.techbug.com
DocumentRoot /home/techbug/public_html/
ErrorLog logs/error_log
CustomLog logs/sinvi-access_log combined env=!nosave
</VirtualHost>
와 같이 될것이다. 이상태에서 아래와 같이 몇가지만 바꿔준다.
<VirtualHost *:80>
ServerName techbug.com
#ServerAlias www.techbug.com <=== 주석처리
RedirectMatch /(.*)$ http://www.techbug.com/$1 <==== 삽입
DocumentRoot /home/techbug/public_html/
ErrorLog logs/error_log
CustomLog logs/sinvi-access_log combined env=!nosave
</VirtualHost>
<VirtualHost *:80>
ServerName www.techbug.com <=== www 사이트 명시
#ServerAlias www.techbug.com <=== 주석처리
DocumentRoot /home/techbug/public_html/
ErrorLog logs/error_log
CustomLog logs/sinvi-access_log combined env=!nosave
</VirtualHost>
설명을 하자면 같은 페이지를 보여주되 접속 도메인은 개별화 시킨 것이다. 다시 말해, techbug.com을 주소창에 입력하게 되면, 우선은 윗쪽 가상호스트 설정에 의해 접속하게 되고, RedirectMatch /(.*)$ http://www.techbug.com/$1 행에 의해 다시 두번째 가상호스트 설정인 www.techbug.com 으로 접속하게 되는것이다.
마지막의 $1의 역할은 techbug.com/xxxxx/xxxx/xxxx...등의 x로 표시된 모든 문자를 $1로 치환하여 www를 붙인 www.techbug.com 도메인 뒤에 다시 반환해주는 역할을 한다.
즉, techbug.com 도메인의 메인 페이지 뿐만 아니라, 하위의 모든 페이지에 www가 붙게 되는것이다
참고 :
'Integrator > U-LINUX' 카테고리의 다른 글
Character Set과 Encoding 이해하기 (0) | 2009.03.31 |
---|---|
Apache expires 설정으로 브라우저 캐시 (0) | 2009.01.29 |
리눅스용 소프트웨어 (0) | 2008.03.29 |
우분투에서 하드드라이브 추가하기 (2) | 2008.03.04 |
우분투 IP변경하기 (0) | 2008.03.04 |