Apache Directory 지시문은 DocumentRoot와 관련이 있어야합니까?


14

Apache Directory지시어는 DocumentRoot와 관련이 있어야합니까? 나는 VirtualHost의 맥락에서 묻지 만 아무런 차이가 없어야합니다.

다시 말해, 다음과 같아야합니다.

<VirtualHost>
    DocumentRoot /var/www
    <Directory /var/www>
    ...

또는

<VirtualHost>
    DocumentRoot /var/www
    <Directory />
    ...

둘 다 작동합니다. 아파치 디렉토리의 문서는 말한다 :

디렉토리 경로는 디렉토리의 전체 경로이거나 와일드 카드 문자열입니다.

...하지만 "전체 경로"문과 모순되는 두 가지 예를 보여줍니다.

ED : 상의 모순 된 사례도있다 아파치 성능 튜닝 페이지FollowSymLinks를하고 SymLinksIfOwnerMatch가에 AllowOverride 섹션.

재미있게도 데비안의 기본 vhost 설정을보고 다음을 발견했습니다.

<VirtualHost *:80>
    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>

    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>
    ...

답변:


9

문서가 정확하고 <Directory>지시문이 전체 경로 여야합니다 .

첫 번째 예는 VirtualHosts에 대한 지시문을 구성하는 방법이며 지시문 내의 옵션을에 적용합니다 DocumentRoot. 두 번째 예는 파일 시스템 루트 (literally /)를 참조하는 것 입니다.

지시문의 나머지 부분을 게시하지는 않았지만 일반적으로 Apache를 감옥에 가두어 액세스를 제한하는 방법으로 사용되며 일반적으로 VirtualHosts에서 명시 적으로 허용 하는 주 파일 apache2.conf또는 httpd.conf구성 파일에 배치됩니다 (항상 그런 것은 아님) 자신의 DocumentRoot디렉토리에 액세스 할 수 있으므로이 둘은 종종 함께 사용됩니다.

로부터 아파치 문서 :

<Directory />의 기본 액세스는 모든 액세스를 허용하는 것입니다. 이는 Apache httpd가 URL에서 매핑 된 모든 파일을 제공함을 의미합니다. 다음과 같은 블록으로이를 변경하는 것이 좋습니다.
    <디렉토리 />
      모든 거부 필요
    </ Directory>
액세스하려는 디렉토리에 대해서는이를 재정의하십시오. 자세한 내용은 보안 팁 페이지를 참조하십시오.

두 번째 예제가 문자 그대로 파일 시스템을 참조 /한다면 왜 Apache가 /var/www디렉토리를 제공합니까?
Jeff

1
아파치는 DocumentRoot. Directory지시어는 완전히 별개이며, "이 디렉토리와 모든 하위 디렉토리에 동봉 된 구성을 적용"말의 효과가 있습니다. 보다 구체적인 구성이 우선 <Directory /var/www/>하므로을 무시 <Directory />합니다.
Craig Watson

내가 참조. 따라서 <Directory />VirtualHost 컨텍스트에서 서버 전체 옵션 (또는 기타 설정)을 <Directory />? 말이 되네요 도와 주셔서 감사합니다.
Jeff
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.