У меня есть довольно длинный блок директив конфигурации авторизации в Apache <Directory>
контекст в виртуальном конфигурационном файле хоста.
Это имеет учетные данные LDAP и сложный фильтр, который будет раздражающим для репродуцирования в vhost конфигурационном файле.
Вот упрощенный пример:
ServerName server.domain.com
DocumentRoot /var/www/server.domain.com
<Directory /var/www/server.domain.com/>
AllowOverride FileInfo
Options +ExecCGI
# PASSWORD PROTECT
AuthType Basic
AuthBasicProvider ldap file
AuthName "INTERNAL"
AuthLDAPURL ldap://xxx
AuthLDAPBindDN uid=xxx,cn=xxx
AuthLDAPBindPassword xxx
AuthzLDAPAuthoritative on
AuthUserFile /var/www/server.domain.com/.htpasswd
Require valid-user
</Directory>
Alias /alias1 /var/www/alias1.domain.com
<Directory /var/www/alias1.domain.com>
# ?
</Directory>
Alias /alias2 /var/www/alias2.domain.com
<Directory /var/www/alias2.domain.com>
# ?
</Directory>
Alias /alias3 /var/www/alias3.domain.com
<Directory /var/www/alias3.domain.com>
# ?
</Directory>
</VirtualHost>
Теперь, потому что большая часть Auth*
директивы должны использоваться в a Directory
или .htaccess
контекст, я сталкиваюсь с необходимостью повторить полное AuthType
...Require valid-user
блок для каждого Alias
то, что я добавляю.
Единственным путем я могу думать, чтобы избежать, чтобы это разделило подлинный раздел на отдельный файл и ссылку то использование Include
.
Как решение Include
хорошо работал бы и был бы легок поддержать.
Есть ли другой способ сделать это, которое дает более чистый vhost конфигурационный файл с меньшим количеством повторения?
На всякий случай существует отличный способ выполнения вещей как это в Apache, который я не взял за прошлые 15 лет!
Править: Я должен указать, что причина использую Alias
для простого развертывания, я не хочу должным быть воссоздавать символьные ссылки каждый раз, когда я восстанавливаю это DocumentRoot
каталог. Я понимаю хотя то использование символьные ссылки и Location
обеспечил бы каскад, который я буду искать для предотвращения повторения.
Проблема, которую я сделал, я предполагаю, больше относится к факту это Alias
требует соответствия Directory
блок, чтобы смочь ограничить доступ.
Можно было бы использовать mod_authn_alias для группировки и повторного использования некоторых директив, но я не думаю, что это сильно поможет. Вам все равно придется повторять много директив.
По моему опыту, решение Include
работает хорошо и легко поддерживается.
Можете ли вы применить свои директивы authnz ко всем /var/www? Это устранило бы необходимость указывать их отдельно для каждого подкаталога. Если нет, то, возможно, вы могли бы переместить только те сайты, которым нужен authnz в подкаталог, скажем, /var/www/authnz, и применить настройки только один раз к этому каталогу.
*.