<-
Apache > HTTP Server > Documentation > Version 2.4

섹션 설정

가능한 언어:  en  |  fr  |  ja  |  ko  |  tr 

이 문서는 최신판 번역이 아닙니다. 최근에 변경된 내용은 영어 문서를 참고하세요.

설정파일에 있는 지시어는 서버 전체에 적용되거나, 특정 디렉토리, 파일, 호스트, URL에만 적용될 수 있다. 이 문서는 다른 지시어의 적용범위를 제한하기위해 설정 섹션이나 .htaccess 파일을 사용하는 방법을 설명한다.

Support Apache!

참고

top

설정 섹션의 종류

섹션에는 두가지 종류가 있다. 대부분은 매요청마다 처리된다. 해당하는 요청에만 안에 포함한 지시어를 적용한다. 반대로, <IfDefine><IfModule>은 서버가 시작할때와 꺼질때만 처리한다. 시작할때 상태가 참이면 안에 있는 지시어가 모든 요청에 적용된다. 참이 아니면 안에 있는 지시어는 무시한다.

<IfDefine> 지시어는 httpd 명령행에 적절한 파라미터가 있는 경우에만 안에 포함한 지시어를 적용한다. 다음 설정을 예로 들면, 서버를 httpd -DClosedForNow로 시작할 경우에만 모든 요청이 다른 사이트로 리다이렉션된다:

<IfDefine ClosedForNow>
Redirect / http://otherserver.example.com/
</IfDefine>

<IfModule> 지시어도 특정 모듈이 서버에 포함된 경우에만 안에 든 지시어를 적용한다는 점을 제외하고는 매우 비슷하다. 모듈을 서버에 정적으로 컴파일하거나 동적으로 컴파일한후 설정파일 앞에 LoadModule 줄이 있어야 한다. 이 지시어는 특정 모듈의 설치유무에 따라 설정파일이 다를 필요가 있을때만 사용해야 한다. 모듈이 없는 경우 유용한 오류문이 나오지않을 수 있기 때문에 언제나 사용하길 원하는 지시어를 안에 두면 안된다.

다음 예에서 mod_mime_magic이 있을때만 MimeMagicFiles 지시어를 처리한다.

<IfModule mod_mime_magic.c>
MimeMagicFile conf/magic
</IfModule>

<IfDefine><IfModule>의 검사 앞에 "!"을 붙여 조건을 역으로 할 수 있다. 또, 여러 섹션들을 겹쳐서 사용하여 더 복잡한 효과를 얻을 수 있다.

top

파일시스템과 웹공간

가장 자주 사용되는 설정 섹션은 파일시스템과 웹공간(webspace)의 특정 장소에 대한 설정을 변경하는 것들이다. 먼저 이 둘의 차이를 이해하는 것이 중요하다. 파일시스템은 운영체제 입장에서 디스크를 보는 관점이다. 예를 들어, 기본값으로 아파치를 설치를 하면 유닉스 파일시스템의 경우 /usr/local/apache2, 윈도우즈 파일시스템의 경우 "c:/Program Files/Apache Group/Apache2"에 설치된다. (아파치는 윈도우즈에서 조차 항상, 역슬래쉬가 아닌, 슬래쉬를 사용함을 주의하라.) 반대로 웹공간은 웹서버가 제공하고 클라이언트가 보게될 사이트의 관점이다. 그래서 유닉스에서 기본 아파치 설치를 한 경우 웹경로의 경로 /dir/은 파일시스템 경로 /usr/local/apache2/htdocs/dir/에 해당한다. 웹공간은 데이타베이스 등에서 동적으로 생성될 수 있기때문에 반드시 파일시스템에 직접 대응될 필요는 없다.

파일시스템 섹션

<Directory><Files> 지시어와 정규표현식을 사용하는 지시어는 파일시스템의 특정 부분에 지시어를 적용한다. <Directory> 지시어에 포함된 지시어들은 지정한 파일시스템 디렉토리와 그 하위 디렉토리에 적용된다. .htaccess 파일을 사용해도 결과는 같다. 다음 설정을 예로 들면, 디렉토리 목록(index)이 /var/web/dir1 이하 디렉토리에서 디렉토리 목록(index)이 가능하다.

<Directory /var/web/dir1>
Options +Indexes
</Directory>

<Files> 섹션에 포함된 지시어들은 어떤 디렉토리에 있는지 관계없이 지정한 이름을 가진 파일에 적용된다. 설정파일의 주설정부분에 있는 다음 설정을 예로 들면, 장소와 관계없이 private.html이란 이름을 한 파일의 접근을 거부한다.

<Files private.html>
Order allow,deny
Deny from all
</Files>

파일시스템의 특정 부분에 있는 파일을 지칭하기위해 <Files><Directory> 섹션을 같이 사용한다. 다음 설정을 예로 들면, /var/web/dir1/private.html, /var/web/dir1/subdir2/private.html, /var/web/dir1/subdir3/private.html 같이 /var/web/dir1/ 디렉토리 아래에 있는 이름이 private.html인 파일의 접근을 거부한다.

<Directory /var/web/dir1>
<Files private.html>
Order allow,deny
Deny from all
</Files>
</Directory>

웹공간 섹션

<Location> 지시어와 이에 해당하는 정규표현식을 사용하는 지시어는 반대로 특정 웹공간의 설정을 바꾼다. 다음 설정을 예로 들면, /private으로 시작하는 URL-경로의 접근이 거부된다. 여기에는 http://yoursite.example.com/private, http://yoursite.example.com/private123, http://yoursite.example.com/private/dir/file.html 같이 /private 문자열로 시작하는 요청이 해당된다.

<Location /private>
Order Allow,Deny
Deny from all
</Location>

<Location> 지시어는 파일시스템에 대응할 필요가 없다. 다음 예는 어떻게 특정 URL을 mod_status가 제공하는 아파치 내부 핸들러로 대응시키는지를 보여준다. 파일시스템에 server-status라는 파일은 필요없다.

<Location /server-status>
SetHandler server-status
</Location>

와일드카드와 정규표현식

<Directory>, <Files>, <Location> 지시어에서 C 표준 파이브러리의 fnmatch와 같은 쉘에서 사용하는 와일드카드 문자를 사용할 수 있다. "*" 문자는 어떤 문자열이라도 나타내고, "?" 문자는 어떤 문자 한개를 나타내며, "[seq]"는 seq 중에 한 문자를 나타낸다. 어떤 와일드카드도 "/" 문자를 나타내지는 못한다. 그래서 이 문자는 직접 사용해야 한다.

더 유연