사이트 내 전체검색
[linux] mod_rewrite 와 Virtual User Hosts
로빈아빠
https://cmd.kr/server/378 URL이 복사되었습니다.

본문

mod_rewrite 와 Virtual User Hosts

URL: http://kltp.kldp.org/stories.php?story=01/10/05/8670238
---------------------------------------------------------------------------
제목: mod_rewrite 와 Virtual User Hosts
분류: 아파치
글쓴이: 이운억 <woonuk_at_kldp.org>


mod_rewrite 와 Virtual User Hosts
=================================


원하는 결과는 "http://www.domain.com/~userid" 를 사용치 않고
"http://userid.domain.com" 으로 서비스할 목적입니다.

잘 언급된 문서가 있었던 것으로 생각했는데, 필요해서 찾으려고 하니 힘들더군요 -_-;
생각난 참에 간단히 정리해서 올립니다.

간단히 3단계로 나눌수 있습니다.
1. 네임서버 설정 2. mod_rewrite 모듈 탑재 3. httpd.conf 에 rewrite 관련 설정


1. 네임서버 설정
----------------
  해당하는 zone 파일에서 호스트 이름에 "*" 문자를 사용합니다.

* IN A 111.2.333.4


2. mod_rewrite 모듈 탑재
------------------------
  a) 아파치의 모듈들이 설치된 디렉토리에 mod_rewrite.so 가 존재할 경우.
    c) 로 건너 띄면 됩니다 ^^;

  b) 아파치의 모듈들이 설치된 디렉토리에 mod_rewrite.so 가 없는 경우.
    apache 를 다시 컴파일 합니다.
env CFLAGS="-DEAPI" \ ./configure \ --prefix=/etc/httpd \ --enable-module=so \ --enable-shared=max \ --enable-module=rewrite \ --enable-shared=rewrite make make install

  c) httpd.conf 에서 다음을 확인합니다.
LoadModule rewrite_module libexec/mod_rewrite.so AddModule mod_rewrite.c


3. httpd.conf 에 rewrite 관련 설정
----------------------------------
<VirtualHost *> ServerAdmin admin_at_domain.com DocumentRoot /home/httpd/html ServerName www.domain.com ServerAlias domain.com *.domain.com ErrorLog logs/domain.com-error_log CustomLog logs/domain.com-access_log common ### Virtual User Hosts RewriteEngine on RewriteCond %{HTTP_HOST} !^www\.domain\.com$ RewriteCond %{HTTP_HOST} !^domain\.com$ RewriteCond %{HTTP_HOST} ^[^.]+\.domain\.com$ RewriteRule ^(.+) %{HTTP_HOST}$1 [C] RewriteRule ^([^.]+)\.domain\.com(.*) /home/$1/html$2 </VirtualHost>
-----------------------------------------------------------
-----------------------------------------------------------
제가 사용하는 조금 다른 아파치 셋업 방법입니다.
제 경우는 예제를 그대로 적용하기 어려운게
사용자들이 그룹별로 홈 디렉토리가 다릅니다.
그래서 일괄적으로 /home/$1/ 을 사용할 수 없었습니다.

<VirtualHost *> ServerName foobar.net ServerAlias *.foobar.net # 헤더에 Vary 라인이 있으면 IE 5의 버그(?)로 MIME 타입을 # 제대로 인식하지 못하는 경우가 있었습니다. # (페이지 등록정보를 보면 알 수 없는 타입이라 나오더군요.) SetEnv force-no-vary RewriteEngine on # 기존 유저들을 배려하기 위한 # ~userid ->userid.foobar.net 으로 전송 RedirectMatch permanent ^/~([^/]+)(.*)$ http://$1.foobar.net$2 # 아래 코드는 Rewrite에 미숙하여 틀린 부분이 있을수도 있습니다 # 예외 정의 (www, domain only의 경우 무시하도록) RewriteCond %{HTTP_HOST} !^www\.foobar\.net$ RewriteCond %{HTTP_HOST} !^foobar\.net$ RewriteCond %{REQUEST_URI} !^/~(.+)$ # Match rule (id.foobar.net 으로 접속하면 실제 사용자 계정으로 연결시키는 부분) RewriteCond %{HTTP_HOST} ^([^.]+)\.foobar\.net$ # /~%1/ 을 쓰는 이유는 사용자가 /user1/usera, /user2/userb 등 # 일정한 홈 디렉토리를 가지지 않기 때문입니다. # /~(id)/ 를 사용하면 자동으로 홈 디렉토리로 찾아갑니다. # %1은 바로 위에서 사용된 RewriteCond 의 매치입니다. # RewriteRule 을 1회 줄일 수 있지요. # (현재 아파치 1.3.19 사용중) RewriteRule ^(.+) /~%1/public_html$1 [E=VHOST:%{HTTP_HOST},L] # 로그 CustomLog /path/to/access_log "%{VHOST}e %h %l %u %t \"%r\" %>s %b" </VirtualHost>

댓글목록

등록된 댓글이 없습니다.

1,139 (11/23P)

Search

Copyright © Cmd 명령어 3.143.239.231