VirtualHost를 사용해야 합니다.포함된 블록제전?

VirtualHost를 사용해야 합니다.포함된 블록제전?

<Directory>다음과 같이 블록이 섹션 외부에 배치되는 VirtualHost 구성의 예를 자주 봅니다 <VirtualHost>.

# /etc/httpd/conf.d/example1.conf

<Directory /var/www/html/example1>
    Require all granted
</Directory>

<VirtualHost *:80>
    DocumentRoot "/var/www/html/example1"
    ServerName www.example.com
    ServerAlias example.com
    ServerAdmin [email protected]
    ErrorLog "/var/log/httpd/error_log_example1"
    CustomLog "/var/log/httpd/access_log_example1" combined
</VirtualHost>

아래 예시에는 <Directory>블록이 포함되어 있지 않나요?이내에<VirtualHost>섹션이 의미상 더 정확합니까?

# /etc/httpd/conf.d/example2.conf

<VirtualHost *:80>

    <Directory /var/www/html/example2>
        Require all granted
    </Directory>

    DocumentRoot "/var/www/html/example2"
    ServerName www.example.org
    ServerAlias example.org
    ServerAdmin [email protected]
    ErrorLog "/var/log/httpd/error_log_example2"
    CustomLog "/var/log/httpd/access_log_example2" combined

</VirtualHost>

블록이 단일 VirtualHost에 속하고 필요한 경우 기본 httpd.conf의 설정을 재정의하기 때문에 두 번째 접근 방식이 올바른 것 같습니다.

편집: TLS/SSL이 활성화된 경우 두 번째 방법을 사용하려면 블록을 복사해야 하는데 <Directory>이는 매우 DRY가 아닙니다. 따라서 첫 번째 접근 방식이 올바른 것 같습니다.

답변1

Apache 문서로 시작하기구성 섹션:

  • <Directory>가장 짧은 디렉터리 구성 요소부터 가장 긴 디렉터리 구성 요소까지 처리가 수행됩니다. 예를 들어 은(는) <Directory "/var/web/dir">이전에 처리됩니다 <Directory "/var/web/dir/subdir">.

  • 여러 개가 있는 경우<Directory>일부는 구성 파일 순서대로 처리되는 동일한 디렉터리에 적용됩니다.

  • 내부 부분<VirtualHost>부분적으로가상 호스트 정의 외부의 해당 섹션 이후에 적용됩니다.. 이를 통해 가상 호스트가 주 서버 구성을 재정의할 수 있습니다.

당신이 가정한 대로 두 조각 모두 정확합니다.

관련 정보