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

Включить файлы в Apache HTTP Server версии 2.2 httpd.conf

У меня есть большой файл httpd.conf, большинство из которых - виртуальные хосты. Есть ли способ создать файл, скажем virtual_hosts.conf, и включить его из httpd.conf? Я немного погуглил, но, похоже, не нашел много включений, просто загрузка модуля.

Информацию о файлах apache httpd.conf можно найти по адресу Вот.

Некоторые фрагменты были скопированы с этого веб-сайта, чтобы гарантировать, что информация не будет потеряна, если ссылка станет устаревшей:

Include /usr/local/apache2/conf/ssl.conf
Include /usr/local/apache2/conf/vhosts/*.conf

Относительные пути:

Include conf/ssl.conf
Include conf/vhosts/*.conf

Подстановочные знаки:

Include conf/vhosts/*/*.conf

Я разделяю каждый виртуальный хост на отдельный файл конфигурации vhost, чтобы вам не пришлось искать в гигантском документе одну маленькую директиву. Подобно сообщению Quanta:

Include /etc/apache2/vhosts.d/*.conf

Просто поместите его в последнюю строку в httpd.conf

затем просто разделите ваш единственный vhosts.conf на отдельные файлы для каждого домена, т.е.

domain1.conf
domain2.conf
domain3.conf
etc.... 

намного проще в управлении. -шон

Вы можете сделать это с Включают директива:

Include /path/to/virtual_hosts.conf

ВключитьДополнительно

Также вы можете использовать ВключитьДополнительно директива

IncludeOptional conf/vhosts/*.conf

Так что в таком случае подходящего файла быть не может. Или, как точно сказано в документации,

Он работает аналогично директиве Include, но будет игнорироваться (вместо того, чтобы вызывать ошибку), если используются подстановочные знаки, и они не соответствуют какому-либо файлу или каталогу, или если путь к файлу не существует в файловой системе.

НО!

Обратите внимание, что некоторые версии Apache действительно не запускается в случаях, когда «путь к файлу не существует в файловой системе». Как в примере выше, если нет каталога conf/vhosts/.

Таким образом, в такой проблеме вы можете быть ограничены в безопасном использовании этой директивы, не используя некоторые подкаталоги, если вы не уверены, существуют ли они.

Вроде такой:

<VirtualHost *:80>

DocumentRoot    "/var/www/example.com"
ServerName      "example.com"
ServerAlias     "www.example.com" "example.com" 
...

IncludeOptional /var/www/example.com/*.httpd.conf

</VirtualHost>



<VirtualHost *:80>

DocumentRoot    "/var/www/other.org"
ServerName      "other.org"
ServerAlias     "www.other.org" "other.org" 
...

IncludeOptional /var/www/other.org/*.httpd.conf

</VirtualHost>

Когда некоторым нравится

IncludeOptional /var/www/other.org/*.httpd.conf

воля хорошо работает (есть ли у вас файл, соответствующий заданной маске или нет), но

IncludeOptional /var/www/other.org/config_optional_subdir/*.conf

не удастся если такого подкаталога нет config_optional_subdir.

Обратите внимание, что

IncludeOptional /var/www/other.org/extra.httpd.conf

не удастся тоже, если хотя бы на одном из сайтов не будет именно указанный файл extra.httpd.conf. Подстановочные знаки - это ключ.


Итак, если обычная конфигурация сайта создан и может быть воссоздан автоматически некоторыми шаблон, но для некоторых конкретных сайтов требуется дополнительная конфигурация apache, которую нельзя записать только в файл .htaccess - вы можете использовать этот подход.