Назад | Перейти на главную страницу

Как организовать файлы конфигурации сайта apache

Я ищу способ организовать файлы, которые составляют конфигурацию с поддержкой сайтов 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