Я настраиваю публичный веб-сервер для нескольких собственных веб-сайтов, используя Webmin и Apache 2.
Добавление виртуального хоста и специальных опций для него довольно просто в Webmin.
Однако мне нужен совет, как настроить конфигурацию http и https, используя одни и те же опции.
В настоящее время моя техника заключается в добавлении двух виртуальных хостов, один для порта 80 и один для 443. Это создает два отдельных файла .conf. Проблема в том, что каждый раз, когда я добавляю опцию для одного виртуального хоста, я должен помнить, что нужно сделать то же самое и для другого.
Как я могу избежать этого избыточного дублирования опций для каждого сайта?
Я знаю о директиве 'Include', но как мне эффективно управлять этим с помощью Webmin, чтобы Webmin не запутался? Полагаю, мне придется сначала вручную создать файл include и перенести в него некоторые директивы перед добавлением второго виртуального хоста с опцией SSL?
Как другие подходят к этому?
В принципе, это похоже на этот вопрос, но с Webmin.
Как мне эффективно управлять этим с помощью Webmin?
Webmin позволяет настраивать только функции, веб-интерфейс. Вот почему обычные методы настройки не работают, а вопросы, связанные с панелями веб-настройки, считаются не по теме. Простота настройки может означать две разные вещи, и у вас не может быть и того, и другого:
Включить
с,
макросы и т. Д. Как настроить конфигурацию http и https, используя одни и те же параметры?
Без Webmin. Если это цель, вы должны использовать Include
s и макросы. Если у вас есть несколько имен хостов с одинаковыми настройками, и вы регулярно меняете некоторые настройки для всех, было бы идеально создать
и скормить изменяющиеся детали с помощью Используйте
. Для идентичных http и https:
<Macro VHost $name $domain>
<VirtualHost *:80>
ServerName $domain
ServerAlias www.$domain
DocumentRoot "/var/www/vhosts/$name"
ErrorLog "/var/log/httpd/$name.error_log"
CustomLog "/var/log/httpd/$name.access_log" combined
</VirtualHost>
<VirtualHost *:443>
ServerName $domain
ServerAlias www.$domain
SSLEngine on
SSLCertificateFile "/path/to/$domain.cert"
SSLCertificateKeyFile "/path/to/$domain.key"
DocumentRoot "/var/www/vhosts/$name"
ErrorLog "/var/log/httpd/$name.error_log"
CustomLog "/var/log/httpd/$name.access_log" combined
</VirtualHost>
</Macro>
Use VHost example1 example.com
Use VHost example2 example.net
UndefMacro VHost
Однако, если эти идентичные http и https для каждого домена указывают, что у вас есть действующий сертификат для каждого доамина, зачем вам вообще разрешать http-соединения? Вы можете просто перенаправить весь http на https и забыть о необходимости дважды настраивать что-либо. Конфигурация http будет действительно простой и статичной:
Использование макросов внутри
:
ServerName $ домен
ServerAlias www. $ Domain
Перенаправление / https: // $ domain /
Глобальное перенаправление виртуального хоста http по умолчанию (первый) на соответствующий https, например, mod_rewrite :
Имя сервера default.example.com
RewriteEngine On
RewriteRule (. *) Https: //% {SERVER_NAME} / $ 1 [R, L]
Любой другой подход для перенаправления http на https.