<Directory> 구문에서 접근 제어하는 간단한 예시입니다.

1. <Directory> 의 특정한 문자열로 제어하고 싶을 경우
2. 해당 경로 매칭되는 응답 코드에 맞춘 파킹 페이지로 이동

순서

Directory 섹션의 순서는 다음과 같다.
동시에 존재한다면 해당 순서대로 실행되는 점을 유의하자
1.  <Directory>
2.  <DirectoryMatch>
3.  <Files>와 <FilesMatch>
4.  <Location>

< 기본 상태 >

# Document 를 /home/web 으로 지정한 VHOST 이다.
<Directory> 의 All grants 설정에 따라 기본 페이지가 정상 출력된다.

<Directory /home/web>
    AllowOverride All
    Require all granted
</Directory>

<VirtualHost *:80>
    ServerAdmin admin-bmi
    DocumentRoot "/home/web"
    ServerName bmitest.co.kr
    ServerAlias www.bmitest.co.kr
    ErrorLog "/home/web/logs/bmitest.co.kr-error_log"
    CustomLog "/home/web/logs/bmitest.co.kr" common
</VirtualHost>

# 기본 페이지 정상 출력
[root@CentOS7-CT01 conf]# curl http://localhost/

BMI!

# 하지만 /home/web/logs/accesstest 같은 File 까지 그대로 보여버리는게 문제

[root@CentOS7-CT01 conf]# curl http://localhost/logs/accesstest
oops. This Page must No view! 

접근 제어 설정

# Directory 를 개별 구분하는 것보다 DirectoryMatch 를 하위로 넣어보자
<Directory "/home/web/">
    AllowOverride All
    Require all granted
</Directory>

<Directorymatch "^/.*/logs/">  # DocumentRoot/Logs 경로 금지
  Order deny,allow
  Deny from all
</Directorymatch>

<VirtualHost *:80>
    ServerAdmin admin-bmi
    DocumentRoot "/home/web"
    ServerName bmitest.co.kr
    ServerAlias www.bmitest.co.kr
    ErrorLog "/home/web/logs/bmitest.co.kr-error_log"
    CustomLog "/home/web/logs/bmitest.co.kr" common
</VirtualHost>
# 이제 해당 경로 접근 시도시 403 이 정상적으로 뜬다
[root@CentOS7-CT01 conf]# curl http://localhost/logs/accesstest
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access this resource.</p>
</body></html>
# 포워딩 페이지를 기재하여 원하는 문구나 페이지로 이동 할 수도 있다
<Directory> 바깥에 별도 추가. 문자 또는 URL 입력 가능하다. 
 
ErrorDocument 403 "No No NO!"

# 테스트
[root@CentOS7-CT01 conf]# curl http://localhost/logs/accesstest
No No NO!
image_print
카테고리: Linux

호스트웨이 시스템 팀

호스트웨이 시스템1팀