Должны ли файлы виртуального хоста содержать двадирективы?

Должны ли файлы виртуального хоста содержать двадирективы?

Мы слышали, что хорошей практикой обеспечения безопасности является сброс всех настроек виртуального хоста так, чтобы ничего не было разрешено, а затем добавление еще одной директивы для разрешения определенного доступа — что-то вроде этого:

<VirtualHost *:80>
  DocumentRoot /home/example/public_html

  <Directory />
    AllowOverride None
    Order Deny,Allow 
    Deny from all
  </Directory>

  <Directory /home/example/public_html >
    Options -Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order Allow,Deny
    Allow from all
  </Directory>
</VirtualHost>

Это в какой-то степени имеет смысл, но мы не уверены, поэтому хотели бы услышать несколько мнений о том, как лучше всего все организовать.

решение1

Если вы действительно используете <Directory />директиву так, как она написана, вы ничего не меняете для этого виртуального хоста, но вместо этого вы снова и снова объявляете одни и те же переопределения для каталога /.

Таким образом, эти параметры ничего не делали или, в лучшем случае, <Directory />применялся только последний встреченный раздел:

https://httpd.apache.org/docs/current/sections.html#merging

Если этот раздел выглядит одинаково для каждого виртуального хоста, это не вызовет проблем, но если некоторые виртуальные хосты отличаются и количество виртуальных хостов меняется со временем, будет сложно понять, какая из <Directory />директив была применена.

Я бы удалил этот <Directory />раздел со всех виртуальных хостов и объявил бы его один раз, в глобальной конфигурации.

Связанный контент