Я управляю своим файлом конфигурации apache вручную и стараюсь поддерживать его как можно более аккуратным, чистым и организованным.Поскольку я внедряю SSL сайт за сайтом, появляется все больше и больше директивных дубликатов, которые заставляют меня искать решение.Кто-то отправил мне mod_marco
, но это не поддерживается в моей версии Apache.В любом случае я надеялся на более простое решение.Вот пара определений виртуальных хостов, которые очень похожи на те, которые у меня есть на самом деле.Один для основного сайта, а другой для мобильного сайта:
<VirtualHost *:443>
ServerName www.example.com
ServerAlias example.com
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem
DocumentRoot /webfolder/odometerlog/www
CustomLog "/logs/example.access.log" combined
ErrorLog "/logs/example.error.log"
<Directory "/webfolder/example/www">
Require all granted
</Directory>
Alias "/js/" "/webfolder/example/shared/js/"
Alias "/css/" "/webfolder/example/shared/css/"
Alias "/images/" "/webfolder/example/shared/images/"
Alias "/sounds/" "/webfolder/example/shared/sounds/"
Alias "/tech/" "/webfolder/example/shared/tech/"
RewriteEngine On
RewriteRule ^/archives/([0-9]{4})/([0-9]{2})/$ /archives/index.php?year=$1&month=$2
</VirtualHost>
<VirtualHost *:443>
ServerName m.example.com
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem
DocumentRoot /webfolder/odometerlog/m
CustomLog "/logs/example_m.access.log" combined
ErrorLog "/logs/example_m.error.log"
<Directory "/webfolder/example/m">
Require all granted
</Directory>
Alias "/js/" "/webfolder/example/shared/js/"
Alias "/css/" "/webfolder/example/shared/css/"
Alias "/images/" "/webfolder/example/shared/images/"
Alias "/sounds/" "/webfolder/example/shared/sounds/"
Alias "/tech/" "/webfolder/example/shared/tech/"
RewriteEngine On
RewriteRule ^/archives/([0-9]{4})/([0-9]{2})/$ /archives/index.php?year=$1&month=$2
</VirtualHost>
И это то, во что я хотел бы превратить это?Простой «групповой» или «родительский» контейнер, в который я могу вставить виртуальные хосты, а затем вставить некоторые директивы, которые будут доступны всем виртуальным хостам, содержащимся в нем.На первый взгляд может показаться, что я не сохраняю столько строк кода конфигурации.Но многие из моих сайтов имеют более двух отдельных виртуальных хостов.Это сделало бы чтение и поддержание моей конфигурации намного проще, сделав ее намного более организованной.Но существует ли что-нибудь подобное?
<VirtualHostGroup>
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem
Alias "/js/" "/webfolder/example/shared/js/"
Alias "/css/" "/webfolder/example/shared/css/"
Alias "/images/" "/webfolder/example/shared/images/"
Alias "/sounds/" "/webfolder/example/shared/sounds/"
Alias "/tech/" "/webfolder/example/shared/tech/"
RewriteEngine On
RewriteRule ^/archives/([0-9]{4})/([0-9]{2})/$ /archives/index.php?year=$1&month=$2
<VirtualHost *:443>
ServerName www.example.com
ServerAlias example.com
DocumentRoot /webfolder/example/www
CustomLog "/logs/example.access.log" combined
ErrorLog "/logs/example.error.log"
<Directory "/webfolder/example/www">
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:443>
ServerName m.example.com
DocumentRoot /webfolder/example/m
CustomLog "/logs/example_m.access.log" combined
ErrorLog "/logs/example_m.error.log"
<Directory "/webfolder/example/m">
Require all granted
</Directory>
</VirtualHost>
</VirtualHostGroup>
Также обратите внимание, что я знаю, что могу размещать директивы вне своих виртуальных хостов, и они становятся значениями по умолчанию для директив, явно не определенных в виртуальном хосте.Но это не поможет мне, я размещаю много сайтов на своем сервере.Я ищу способ добавить еще один слой к этой настройке, где я могу определить свои собственные промежуточные группы между «глобальным» и каждым виртуальным хостом.