컨테이너 (섹션) 

컨테이너 지시어는 섹션이라고도 하며 지시어의 범위를 제한하는 역할입니다. 지시어가 컨테이너 밖에 있다면 서버 전체에 영향을 받게됩니다.

설 명
VirtualHost 하나의 아파치 서버가 여러 웹 사이트를 운영할 수 있도록 해주는 가상호스트를 말합니다.
Directory, DirectoryMatch 이 컨테이너는 특정 폴더나 하위폴더에만 적용됩니다. Directory 는 폴더의 패턴을 파라미터로 받을 수 있으며, DirectoryMatch는 "^/www/.*/[0-9]{4}"와 같은 정규식을 파라미터로 받을 수 있습니다.
Location, LocationMatch 특정한 URL이나 URL 패턴에만 적용받습니다. LocationMatch 는 "/{mydomain|home}/data" 와 같은 정규식 패턴을 받을 수 있습니다.
Files, FilesMatch Directory 나 Location 과 같은 패턴은 같지만 특정한 파일이나 파일의 패턴에만 적용 받습니다.

다음은 컨테이너 지시어 예입니다.

<directory data="" home="" www="">
  SomeDirective1
  SomeDirective2
 </directory>


 <location htm="" ownload="">
  SomeDirective3
 </location>


 <filematch bmp="" gif="" jpg="">
  SomeDirective4
 </filematch>

SomeDirective1 과 SomeDirective2 는 www/home/data 와 www/home/data 의 하위 디렉토리에만 적용되고, SomeDirective3 지시어는 Download/*.htm 파일에만 해당됩니다.

SomeDirective4 는 파일확장자 .gif, .bmp, .jpg 만 적용된다는 뜻입니다.


조건 컨테이너

조건 컨테이너는 그 조건이 만족되었을때만 처리되는 지시어입니다.

설 명
IfDefine 이 컨테이너는 파라미터로 받은 조건이 참일때만 처리됩니다.
MyModule 이 아파치가 실행될때 -DMyModule 와 같이 정의할 수 있고, 거짓 파라미터 지시어 형식도 지원합니다.
IfModule 이 지시어는 파라미터로 받은 모듈이 서버에 존재할 때만 처리됩니다.

다음은 IfDefine 지시어 예입니다.


 <ifdefine mymodule="">
    LoadModule my_module modules/libmymodle.so
 <</ifdefine>

다음은 IfModule 예입니다.

<ifmodule prefork.c="">
   StartServers               5
   MinSpareServers        5
   MaxSpareServers      10
   MaxClients               20
   MaxRequestsPerChild 0
 </ifmodule>


아파치 접근제어

지시어는 제어할 폴더에 .htaccess 파일을 만들어 ip 주소, 환경변수, 도메인 네임 등을 제어할 수 있습니다.

Allow from 10.0.0.1 10.0.0.2 10.0.0.3

ip 주소의 일부분 또는 범위를 지정해서 사용할 수 있고, ip 주소의 첫번째, 두번째, 세번째 바이트만 지정할 수도 있습니다.

다음 예는 10.0 에 해당하는 모든 ip주소를 포함합니다.

Deny from 10.0

다음은 ip 주소와 네트워크 마스크를 사용한 예입니다.

 Allow from 10.0.0.0/255.255.255.0

 또는

 Allow from 10.0.0.0/24


도메인 네임을 이용한 Allow/Deny

호스트나 부분적 도메인으로 접근을 제어할 수 있습니다.

Allow from mydomain.com


환경변수를 이용한 Allow/Deny

존재 유무를 검사할 환경변수 이름앞에 "env= "를 붙여주면 접근을 제어할 수 있습니다. 브라우저의 종류나 버전에 따라 통제가 가능합니다.

 BrowserMatch MSIE iexplorer
 Deny from env=iexplorer

모든 대상으로 접근을 허용하려면 Allow from all 이라고 하고, 모든 사용자 접근을 거부하려면 Deny from all 이라고 지정하면 됩니다.

<location home="" site="">
   Order Allow, Deny
   Allow from all
   Deny from mydomain.com
 </location>

Order Allow, Deny 와 같이 순서를 지정하면 해당 리소스에 대한 모든 접근을 거부하나 위 예는 mydomain.com 도메인을 제외한 모두의 접근을 허용한다는 뜻입니다.

Allow,Deny 의 순서가 Allow 지시어를 우선 평가하는데, Deny 지시어보다 Allow 지시어가 우선순위이기 때문에 Deny 가 만족하지 않고, Allow 규칙을 만족한다면 접근을 허용하게 됩니다.

0 댓글