서브 도메인 호스트명을 Rewrite를 사용하여 유저 디렉토리로 매핑시킬때

입질쾌감 물때표

대량의 서브도메인 생성이 매번 DNS서버와 아파치서버를 설정하고 재실행
그것도 양이 많아지지만 끊기는 현상이 발생합니다.
특히나 자동화 계정및 자동 서브도메인부분에서는…
다차원 서브도메인지원 클럽을 만들면서 클럽이 서브도메인에 생성되기때문에
서버를 자동셋팅으로 해결하는 수밖에 없어서 이곳저곳 참고하여 셋팅한걸 올립니다.

BIND zone파일에 대한 셋팅
존파일의 경우

test.com. IN A 111.111.111.111
*.test.com. IN A 111.111.111.111 <-- *.test.com으로 모든 서브도메인을 네임서버에서 잡아줍니다. APACHE http.conf 먼저 아파치에서 자동서브도메인이 셋팅되도록할려면 mod_rewrite 모듈이 필요합니다. 컴파일시 첨부하거나 DSO(동적)방식으로 삽입을 해야합니다. /home/계정명/폴더 <---- 해당 폴더가 서브도메인이 되도록 셋팅

<VirtualHost 218.236.58.88>
ServerAdmin webmaster@test.com ; // 관리자 이메일
DocumentRoot /home/test/www // 기본 웹 루트
ServerName test.com // 기본서버명
ServerAlias *.test.com // 모든 서브도메인을 Alias로 받습니다.
RewriteEngine on // RewriteEngine 활성화
RewriteCond %{HTTP_HOST} ^[^.]+.test.com$ // 서버명에 서브도메인 정규화로 매치
RewriteRule ^(.+) %{HTTP_HOST}$1 [C] // Cond에 해당되는 도메인에 대해서 도메인뒤에 나온 문장 매치
RewriteRule ^([^.]+).test.com(.*) /home/test/$1/$2 서브도메인과 해당페이지 매치
ErrorDocument 404 /home/test/error/err-404.html
ErrorDocument 403 /home/test/error/err-403.html
ErrorLog /home/test/web_log/error_log
CustomLog /home/test/web_log/access_log common
</VirtualHost>

계정이용자들을 서브도메인으로
domain.com/~id를 id.domain.com으로
생략합니다.(상단은 같음)
RewriteEngine on
RewriteCond %{HTTP_HOST} ^[^.]+.test.com$
RewriteRule ^(.+) %{HTTP_HOST}$1 [C]
RewriteRule ^([^.]+).test.com(.*) /home/$1/www$2

이제 아파치 Restart하면 끝……*^^*

젠투 상황에서는 다음과 같이 설정했다.

파일명 : mainframe pri # vi /etc/apache2/vhosts.d/default_vhost.include
위의 파일이 기본 localhost 가상호스팅 파일이다.

DocumentRoot "/var/www/localhost/htdocs"

RewriteLog /var/log/apache2/rewrite_log
RewriteLogLevel 9

RewriteEngine On

ServerAlias *.bbf.com.tw

RewriteCond %{HTTP_HOST} ^[^.]+.bbf.com.tw$
RewriteRule ^(.+) %{HTTP_HOST}$1 [C]

RewriteRule ^([^.]+).bbf.com.tw(.*) /home/$1/public_html/bbf$2

위처럼 설정하면 /var/log/apache2/rewrite_log 파일에서 디버깅 하면서 rewrite 하는 것을 확인할수 있다.

mainframe htdocs # tail -f /var/log/apache2/rewrite_log 

성공시에는 저 설정값을 없애야 한다. 나중에는 로그파일이 엄청나게 커질것이다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다