web-dev-qa-db-ja.com

VirtualHost <Directory>ブロックを<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>ブロックが含まれている次の例within<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の設定を上書きするため、2番目の方法は私には正しいようです。

編集:TLS/SSLが有効になっている場合、2番目の方法では<Directory>ブロックを複製する必要がありますが、これはあまり乾燥していません。このため、最初の方法は正しいようです。

3
Alxs

構成セクション のApacheドキュメントから:

  • <Directory> は、最短のディレクトリコンポーネントから最長の順に処理されます。たとえば、<Directory "/var/web/dir"><Directory "/var/web/dir/subdir">の前に処理されます。

  • 複数の <Directory> セクションが同じディレクトリに適用される場合、それらは構成ファイルの順序で処理されます。

  • <VirtualHost> セクション内のセクションは仮想ホスト定義外の対応するセクションの後に適用されます。これにより、仮想ホストがメインサーバーの構成を上書きできます。

あなたの仮定がそうであるように、両方のスニペットは正しいです。

2
LEI