Есть ли разница между размещением тегов каталога внутри или вне VirtualHosts? Я нашел файл конфигурации, в котором есть несколько VirtualHosts с одним и тем же тегом Directory внутри и одинаковым снаружи; поэтому я думаю об избавлении от этого дублирования, но не совсем понимаю его семантику.
<Directory> внутри <VirtualHost> будет применяться только к файлам в этом каталоге, когда к ним осуществляется доступ через этот VHost. <Directory> вне <VirtualHost> всегда будет применяться (если, конечно, не переопределено в <VirtualHost> или где-либо еще).
С точки зрения безопасности можно спорить обе стороны: дополнительные уровни доступа (AllowOverride all
, например), вероятно, разумнее настроить внутри <VirtualHost>, поскольку непредвиденное взаимодействие между сценариями на другом VHost может позволить вам запустить XSS-атаку. Ограничения доступа (Deny from all
, Allow from 127.0.0.1
) имеет больше смысла за пределами <VirtualHost>, если есть бэкдор через что-то вроде псевдонима верхнего уровня или ScriptAlias. И тогда вы попадаете в действительно сложные возможности: где же AllowOverride all
который обеспечивает ограничение доступа в .htaccess
go, поскольку у кого-то может быть VHost, у которого механизм сценариев отключен по соображениям производительности или безопасности, но который затем предоставляет файл с конфиденциальной информацией, обычно защищенной .htaccess
?
В конце концов, место размещения <Directory> оказывается комбинацией трех вещей в порядке возрастания важности:
Include
для максимальной разборчивости).