Я ищу способ организовать файлы, которые составляют конфигурацию с поддержкой сайтов apache.
Допустим, у меня есть сайты A, B и C на моем веб-сервере. У этих сайтов разные DocumentRoot s и разные RewriteRule s, а также различные требования к аутентификации. Определяется Псевдоним и Каталог контексты. Я использую сервер на базе Debian.
Я хочу как http и https версия A, B и C.
Для VirtualHost ServerName www1.myhome.com;
, Я хочу служить А и Б.
Для VirtualHost ServerName www2.myhome.com;
, Я хочу служить B и C.
Как избежать дублирования конфигурации A, B и C?
Я пытался использовать включения в разных формах. Включая конфигурацию, например, A в разные виртуальные хосты, но я обнаружил, что проблема с путями к файлам громоздка. В частности, это не позволяет мне a2ensite A
. Также это затрудняет поиск и устранение неисправностей в файле конфигурации. Все это делается в рамках перехода с Apache2.2 на Apache2.4.
Есть ли хорошее решение этой проблемы?
Конфигурация сайта A. B и C похожи по структуре.
Alias /A /srv/rootA/
<Directory /srv/rootA/>
// Unique stuff for A
// In particular Auth and rewrite rules
</Directory>
Это одно из многих решений, и я предполагаю, что вы работаете на сервере на базе Debian.
В корневом каталоге сервера Apache создайте каталог instances
. В этом каталоге создайте столько файлов конфигурации, сколько у вас есть «сайтов» (A, B или C). Определите в них, что вам нужно, и назовите каждый файл соответствующим образом.
В sites-available
каталог, создайте по одному файлу для каждого необходимого виртуального хоста. В этих файлах определите свой виртуальный хост как обычно и при необходимости включите конфигурацию «сайтов», то есть:
# Vhost for www1.myhome.com
<VirtualHost *:80>
Include instances/siteA.conf
Include instances/siteB.conf
</VirtualHost>
После вы сможете делать a2ensite
и отлаживать проще.
Ссылка на команду Apache include: http://httpd.apache.org/docs/2.4/mod/core.html#include