./configure --prefix=/usr/local/env/apache
--enable-rewrite=shared
--enable-proxy=shared
--enable-proxy
--enable-proxy-http
--enable-rewrite
참고1. server.xml의 구조
<Server>
|
+---<Service>
|
+---<Connector>
|
+---<Engine>
|
+---<DefaultContext>
|
+---<Realm>
|
+---<Logger>
|
+---<Host>
|
+---<Context>
|
+---<Value>
|
+---<Realm>
|
+---<Logger>
참고2. Tomcat Worker
workers.properties 예제
workers.tomcat_home=D:\tomcat5.5
workers.java_home=C:\jdk1.5
ps=/
worker.list=oracleclub, wiki, dev
#local.www.gurubee.net
worker.oracleclub.port=7003
worker.oracleclub.host=localhost
worker.oracleclub.type=ajp13
#wiki.gurubee.net
worker.wiki.port=7004
worker.wiki.host=localhost
worker.wiki.type=ajp13
#dev.www.gurubee.net
worker.dev.port=7005
worker.dev.host=localhost
worker.dev.type=ajp13
참고3. 톰캣의 <Connector> 요소
httpd.conf
# jk_module 추가
LoadModule jk_module modules/mod_jk-apache-2.0.58.so
# workers.properties 파일 추가
JkWorkersFile "C:\Program Files\Apache Group\Apache2\conf\workers.properties"
# virtualhost 설정 추가
include "conf/vhosts/*.conf"
dev.conf
<VirtualHost 127.0.0.1:80>
ServerName dev.www.gurubee.net
ServerAlias www.gurubee.net
ServerAlias web.www.gurubee.net
DocumentRoot C:\struts2\webapp
ErrorLog logs/dev.www.gurubee.net-error.log
CustomLog logs/dev.www.gurubee.net-access.log common
JkMount /*.ok dev
</VirtualHost>
server.xml
<?xml version="1.0" encoding="UTF-8"?>
<Server port="20005" shutdown="SHUTDOWN">
<Service name="Tomcat-Apache-mod_jk">
<Connector port="7005"
enableLookups="false" redirectPort="10445"
protocol="AJP/1.3" URIEncoding="euc-kr" />
<Engine name="webhosting" defaultHost="localhost">
<Host name="dev.www.gurubee.net" appBase="oracleclub"
unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Alias>www.gurubee.net</Alias>
<Alias>web.www.gurubee.net</Alias>
<Context path="" docBase="C:/struts2/webapp" reloadable="true" workDir="C:/struts2/webapp/WEB-INF/work" />
</Host>
</Engine>
</Service>
</Server>
하나의 IP로 여러개의 가상 호스트를 설정하는 방법을 알아보도록 하자.
httpd.conf
# 127.0.0.1에 연결되는 모든 요청을 Host 헤더의 내용을 기준으로 처리한다.
NameVirtualHost 127.0.0.1:80
Listen 80
<VirtualHost 127.0.0.1:80>
ServerName dev.www.gurubee.net
DocumentRoot C:\struts2\webapp
</VirtualHost>
<VirtualHost 127.0.0.1:80>
ServerName local.www.gurubee.net
DocumentRoot C:\oracleclub\webapp
</VirtualHost>
<VirtualHost 127.0.0.1:80>
ServerName wiki.gurubee.net
DocumentRoot D:\confluence-2.7-std\confluence
</VirtualHost>
httpd.conf
Listen 192.168.1.1:80
Listen 192.168.1.2:80
<VirtualHost 192.168.1.1:80>
DocumentRoot C:\struts2\webapp
</VirtualHost>
<VirtualHost 192.168.1.2:80>
DocumentRoot C:\oracleclub\webapp
</VirtualHost>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^/$ /main.ok [R]
RewriteRule ^/community/([0-9]+)$ /articlelist.ok?article.communityId=$1 [PT]
RewriteRule ^/article/([0-9]+)$ /articleview.ok?article.articleId=$1 [PT]
</IfModule>
참고4. 정규표현식 기초
. : 다수의 한문자
? : 0개 이상의 한문자
* : 0개 이상의 문자 또는 문자열
+ : 1개 이상의 문자 또는 문자열
^ : 문자열의 첫문(열)을 지정합니다.
$ : 문자열의 끝 문자(열)을 지정합니다.
(역슬래쉬) : 정규표현식에서 특별한 의미로 사용되는 문자의 특수기능을 제거합니다.(예:(, ), [, ] . 등)
{n} : 정확히 n번 반복
{n,} : n번 이상 반복
{n,m} : n 이상 m 이하 반복
[chars] : 문자들의 범위 또는 표현할 수 있는 문자들을 설정합니다.
예) [a-z] : a 부터 z 까지의 소문자, [tT] : 소문자 t 또는 대문자 T
정규표현식 단축표현들
[:alpha:] : 알파벳. [a-zA-Z] 와 같은 표현
[:alnum:] : 알파벳과 숫자. [a-zA-Z0-9] 와 같은 표현
[:digit:] : 숫자 [0-9] 와 같은 표현
[:upper:] : 대문자. [A-Z] 와 같은 표현