В Apache2 на Ubuntu мой сайт слушает 80, и теперь я хочу добавить SSL. Есть ли способ включить SSLEngine для порта 443, чтобы мне не нужно было копировать весь блок VirtualHost?
Когда я делаю это:
Listen 80
Listen 443
NameVirtualHost *
<VirtualHost *>
SSLEngine On
... a bunch more lines...
</VirtualHost>
Он включает SSLEngine для порта 80. Есть ли способ использовать только один блок VirtualHost и включить только SSLEngine для порта 443? Так что я могу сделать что-то подобное?
Listen 80
Listen 443
NameVirtualHost *
<VirtualHost *>
<IfPort 443>
SSLEngine On
</IfPort>
... a bunch of lines I don't want to copy into another VirutalHost block...
</VirtualHost>
Как я уже упоминал в другом вопросе о stackoverflow ( /programming/679383/do-i-have-to-duplicate-the-virtualhost-directives-for-port-80-and-443/52375167# 52375167 ):
Вместо использования
Include
используется другая опцияMacro
(так что вы можете хранить все это в одном файле).Сначала включите модуль макроса:
Затем поместите ваши общие вещи в макрос и
use
это из ваших виртуальных хостов:Макросы также могут принимать параметры и быть определены в других включенных файлах; так что вы можете использовать их немного как функции и сохранить много дубликатов в ваших конфигурационных файлах Apache.
Смотрите здесь для более подробной информации:
https://httpd.apache.org/docs/2.4/mod/mod_macro.html
источник
Вы можете поместить настройки каталога в
<Directory>
блок вне любых<VirtualHost>
блоков. Это будет применять их ко всем виртуальным хостам, но только внутри указанного пути.источник