RedHat Linux >> Server Administration for Redhat Linux
|
[목차] |
제5장 Apache Web 서버
2. 아파치 모듈 아파치엔 많은 기능이 포함되어 있다. 특히 이러한 기능들은 모듈로써 추가 확장이 가능하다. 아파치에서 기본적으로 제공하는 모듈도 있지만, 제3자에 의해 제공되는 모듈도 있다. 아래 표는 아파치에 포함된 기본 모듈중 일부를 나열한 것이다. 뒤에서 소개할 PHP는 아파치에서 제공하는 것이 아닌 제3자에 의해 제공되는 모듈이라고 할 수 있다.
------------------------------------------------------------------------------- 모듈이름 정의 기타 ------------------------------------------------------------------------------- mod_core 아파치 핵심적인 기능을 내포하고 있다. mod_access 호스트 기반의 접근 제어 mod_actions 파일타입/메소드 기반의 스크립트 실행 아파치 1.1 이상 mod_alias Aliases 설정 및 리다이렉트 mod_asis .asis 파일 핸들러 mod_auth 텍스트 파일을 이용한 유저 인증 mod_autoindex 자동 디렉토리 리스트 mod_cgi CGI 스크립트를 발생시킨다. mod_dir 기본 디렉토리 핸들링 mod_env 환경정보를 CGI 스크립트에게 넘겨준다. mod_imap 이미지맵 파일 핸들러 mod_include Server-parsed 문서(eg. SSI의 사용) mod_info 설정 정보에 접근할 수 있도록 한다. mod_log_config 기존 mod_log_common를 대체한 사용자 기반의 로그 설정 mod_mime 파일 확장자를 이용해 문서의 타입을 결정 mod_negotiation Accept 헤더에 따라 컨텐트를 선택한다. mod_setenvif 클라이언트 정보를 기반으로 한 환경변수 설정 mod_speling 일반적인 철자법 오류를 고친다. mod_status 서버 상태를 보여준다. mod_userdir 사용자 홈 디렉토리 ----------------------------------------------------------------------------------
이 모든 모듈의 기능을 소개하는 것은 어렵다. 한정된 지면에 소개하기엔 너무나 많고, 그 기능 또한 간단히 설명할 수 없는 것들이기 때문이다. 아파치에서 제공하는 모듈 중 기본적으로 사용하는 일부 모듈을 소개한다.
가. mod_speling
파일명 : mod_speling.so 기능 :철자를 자동으로 고쳐주는 기능을 가지고 있는 모듈
홈페이지 접속을 위하여 브라우져의 URL입력 창에 주소를 적는데, 잘못된 철자를 입력하는 경우, 해당 문서를 찾지 못하는 경우가 있다. 이때, 접속하고자 하는 서버의 아파치에서 mod_speling 모듈을 동작하고 있다면, 유사한 문서를 찾아준다. 만약, 유사한 철자를 가지고 있는 하나의 문서가 존재한다면 그 문서를 보여주고, 두 개 이상의 문서를 보여주고, 두 개 이상의 문서가 있을 경우엔 그 문서들의 목록을 브라우저상에 보여주고 선택할 수 있도록 한다. 그런데 유사한 철자를 가지고 있는 문서가 존재하지 않는다면, Document not Found 라는 메시지가 나타난다. 이 모듈을 사용하기 위해선 mod_speling.so라는 모듈이 httpd.conf에 정의되어 있어야 하며, CheckSpelling on 이 설정되어 있어야 한다. 다음 리스트 안의 (..)은 http.conf에 포함된 다른 라인들을 생략한 표시이다.
# vi httpd.conf
... LoadModule speling_module modules/mod_speling ... AddModule mod_speling.c ... <IfModule mod_speling.c> CheckSpelling on </IfModule> ...
<IfModule 모듈이름.c>에서 </IfModule>은 모듈이름.c 라는 모듈이 정의 되어있을 때, 두 블록 지시자 사이의 다른 지시자가 동작한다는 의미이다. CheckSpelling on은 mod_speling.c가 정의되어 있는 경우에만 동작한다는 것이다. <IfModule mod_speling.c> CheckSpelling on </IfModule>
라고 하지않고,
CheckSpelling on
이라고만 해도 된다. 물론 이 경우엔 mod_speling.c가 정의되어 있다고 전제한다. 이기능을 이용할 때 주의할 점은 사적인 문서나 외부에 공개되어선 안되는 문서가 있는 경우, 자칫 보여질 수 있는 위험이 있다는 것이다. 따라서 이 기능을 이용할때는 어디서 이러한 기능을 사용할지 결정해야만 한다. CheckSpelling on은 특정 디렉토리에서만 활성화되도록 할 수도 있다.(<Directory> 블록지시자 내에서 설정하면 된다). 그리고, leelab.co.kr/~jklee와 같이 유저 네임을 나타내는 jklee와 같은 철자는 자동으로 정정하지 않는다. 단지, 파일이름과 디렉토리 이름만 정정한다는 것을 유념하기 바란다.
나. mod_userdir
파일명 : mod_userdir.so 기능 : 사용자들의 개인 홈페이지를 이용할 수 있도록 한다.
URL중 ~가 포함된 경우를 보거나 입력해 본 적이 있을 것이다. 예를 들어 leelab.co.kr/~jklee에서 ~로 시작하는 부분을 볼 수 있다. 즉, jklee라는 것은 개인 유저 네임이다. 이렇듯, mod_userdir은 개인 사용자의 홈페이지가 있는 디렉토리를 지시하도록 하는 기능을 가지고 있다. 모듈설정은 다음과 같다.
# vi httpd.conf
... LoadModule userdir_module modules/mod_userdir ... AddModule mod_userdir.c ... UserDir public_html ...
UserDir public_html은 leelab.co.kr/~jklee/index.html이라고 했을 때, 실제 요청되는 문서의 경로는 ~jklee/public_html/index.html이 된다. UserDir은 Disabled와 Enabled라는 두 개의 옵션이 있다.
UserDir Disabled|Enabled User_name[,user_name]
Disabled는 user_name의 사용자는 ~user_name과 같은 기능을 사용할 수 없다는 의미다. Enabled의 기능에 우선시 된다. 만약, Enabled로 설정된 user_name이라고 하더라도 Disabled로 지정된 user_name이라면, ~user_name과 같은 기능을 사용할 수 없다. Enabled는 Disabled의 반대로 user_name 사용자는 ~user_name과 같은 기능을 사용할 수 있다. 예를 들면 다음과 같다. UserDir Disabled user1,user2, user3 UserDir Enabled user3, user4, user5
user1,user2,user3 사용자는 ~user1, ~user2, ~user3과 같은 기능을 사용할 수 없다. 반대로 user4, user5는 ~user4, ~user5와 같은 기능을 사용할 수 있다. 특히 user3의 경우엔 Enabled에서 지정되어 있지만, Disabled에서도 지정되어 있어 Disabled가 우선시 되므로 ~user3과 같은 기능을 사용할 수 없는 것이다. 다. mod_dir
파일명 : mod_dir.so 기능 : URL의 마지막에 '/'을 붙여주는 기능과 기본 문서를 지정할 수 있도록 한다.
URL의 마지막에 붙여지는 '/'를 'trailing slash'라고 한다. 이는 leelab.co.kr/~jklee라고 했을 때, leelab.co.kr/~jklee/과 같이 재지정하도록 한다. 따라서 마지막에 '/'을 붙이지 않아도 자동으로 '/'을 확장하는 기능을 제공하는 것이다. 또한, mod_dir엔 DirectoryIndex라는 지시어가 포함되어 있는데, 기본적으로 보여줄 문서를 지정할 수 있도록 한다. 예를 들면 다음과 같다.
DirectoryIndex index.html index.php3 index.cgi
클라이언트에서 URL로 leelab.co.kr/~jklee/라고 했을 때, mod_dir에 의해 leelab.co.kr/~jklee/ index.html과 같이 재지정된다. 만약 index.html이 없다면, 다음 문서인 index.php3를 찾게 되고, 이 문서도 없다면 마지막으로 index.cgi 문서를 찾게 되는 것이다.
# vi httpd.conf ... LoadModule dir_module modules/mod_dir ... AddModule mod_dir.c ... DirectoryIndex index.html index.php3 index.cgi ...
라. mod_alias
파일명 : mod_alias.so 기능 : 단순한 URL의 해석 및 재전송(redirection)기능
alias라는 것은 하나의 이름을 다른 이름으로 매핑하는 것을 뜻한다. mod_alias에 포함된 지시자로는 Alias, AliasMatch, Redirect, RedirectMatch, RedirectTemp, RedirectPermanent, ScriptAlias, ScriptAliasMatch 등이 있다. 특히, 이중에 RedirectTemp 와 RedirectPermanent의 경우엔 아파치 버전 1.2에서만 지원되며, 1.3에서는 지원되지 않는다. 1.3에서 동일한 기능을 이용하려면, Redirect Temp 또는 Redirect Permanent와 같이 이용하면 된다. 이들 지시자들에 대한 기능을 간단히 요약하면 다음과 같다.
- Alias : DocumentRoot로 지정된 이외의 곳에 있는 문서를 이용할 수 있다. - Redirect : 새로운 URL로 매핑시킨다. - RedirectTemp : 사용자에게 매핑이 임시적인 것임을 알려준다. - RedirectPermanent : 사용자에게 매핑이 영구적인 것임을 알려준다. - ScriptAlias : CGI 스크립트가 포함되어 있는 디렉토리임을 알려준다. 특히, 지시자 중에 AliasMatch와 같이 Match가 덧붙여진 지시자는 원 지시자의 기능과 동일하며, 단지 정규 표현식을 이용할 수 있다. 예를 들어 Alias /image /home/images라고 한다면, leelab.co.kr/image/foo.jpg일 때, 서버에서는/home/images/foo.jpg를 돌려준다. AliasMatch ^/image/foo(.*) /home/images/foo$1라고 한다면, leelab.co.kr/image/foo.gif 라고 했을 때, /home/images/foo.gif를 돌려준다. 이와 같이 Match라는 것을 덧붙여진 지시자를 이용하면, 정규표현식을 사용할 수 있다. ScriptAlias의 경우 CGI 스크립트가 있는 디렉토리임을 알려줄 때 사용하는데, 이 경우 ScriptAlias로 지정된 디렉토리 안의 모든 파일은 CGI 스크립트로 간주된다. 이로 인해 ScriptAlias로 지정된 디렉토리 내의 이미지 파일이 있다면, 실제로 이 이미지를 불려오면 모두 깨져 보인다. 따라서 이런 경우엔, 이미지 파일은 ScriptAlias로 지정된 디렉토리 밖에 두어야 한다.
# vi httpd.conf ... LoadModule alias_module modules/mod_alias ... AddModule mod_alias.c ... Alias /icons/ /home/httpd/icons/ ... ScriptAlias /cgi-bin/ /home/httpd/cgi-bin/ ...
그 밖의 모듈에 대한 것은 여러분의 필요에 따라 사용해보기 바란다. 앞서 소개한 모듈의 기능은 기본적으로 아파치의 설정에서 사용되고 있는 대표적인 것중 일부이다.
|
[목차] |