У меня проблема с обслуживанием большого количества виртуальных хостов, и мне было интересно, есть ли более эффективный способ сделать это.
В настоящее время я использую директиву Location для обслуживания большого количества проектов из разных отделов, всего более 300 проектов из 19 отделов. Структуры одинаковы для каждой директивы Location, за исключением каталогов, из которых обслуживаются файлы. В настоящее время у меня есть большой файл, который выглядит примерно так:
<VirtualHost *>
ServerName www.myserver.com
<Location /departmentA/project1>
AuthType Basic
AuthName "By Invitation Only"
AuthUserFile /usr/local/departmentA/project1/passwords
Require valid-user
</Location>
<Location /departmentA/project2>
AuthType Basic
AuthName "By Invitation Only"
AuthUserFile /usr/local/departmentA/project2/passwords
Require valid-user
</Location>
<Location /departmentB/project1>
AuthType Basic
AuthName "By Invitation Only"
AuthUserFile /usr/local/departmentA/project1/passwords
Require valid-user
</Location>
</VirtualHost>
Как видите, все эти структуры одинаковы, за исключением путей. Конечно, мне бы хотелось, чтобы я мог использовать переменные для названий отделов и проектов и просто поддерживать единую директиву Location. Я предполагаю, что это также менее тяжело на сервере и памяти.
<VirtualHost *>
ServerName www.myserver.com
<Location /$1/$2>
AuthType Basic
AuthName "By Invitation Only"
AuthUserFile /usr/local/$1/$2/passwords
Require valid-user
</Location>
</VirtualHost>