Я настраиваю общедоступный веб-сервер для нескольких моих собственных веб-сайтов, используя Webmin и Apache 2.
Добавление виртуального хоста и специальных опций для него с Webmin довольно просто.
Однако мне нужен совет о том, как настроить конфигурацию http и https, используя одни и те же параметры.
В настоящее время я использую два виртуальных хоста, один для порта 80 и один для порта 443. Это создает два отдельных файла .conf. Проблема в том, что каждый раз, когда я добавляю опцию к одному виртуальному хосту, я должен помнить, что делал то же самое и для другого.
Как я могу избежать этого избыточного дублирования параметров на сайте?
Я знаю о директиве «Include», но как мне эффективно управлять этим с помощью Webmin, чтобы Webmin не запутался? Полагаю, мне придется вручную создать включаемый файл и переместить в него некоторые директивы, прежде чем добавлять второй виртуальный хост с опцией SSL?
Как к этому подходят другие?
В принципе, это похоже на этот вопрос, но с добавлением Webmin.
Как мне эффективно управлять этим с помощью Webmin?
Webmin позволяет настраивать только функции своего веб-интерфейса. Вот почему обычные методы настройки не работают, а вопросы, связанные с панелями веб-настройки, считаются не по теме. Простота настройки может означать две разные вещи, и у вас не может быть того и другого:
Include
с, макросы и т.п.Как настроить конфигурацию http и https, используя одни и те же параметры?
Без Webmin. Если это цель, вы должны использовать Include
s и макросы. Если у вас есть несколько имен хостов с одинаковыми настройками и вы регулярно меняете некоторые настройки для всех, было бы идеально создать <Macro>
и скормить изменяющиеся детали с помощью Use
. Для одинаковых 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 будет действительно простой и статичной:
Используя макросы, внутри <Macro>
:
<VirtualHost *:80>
ServerName $domain
ServerAlias www.$domain
Redirect / https://$domain/
</VirtualHost>
<VirtualHost *:443>
Глобальное перенаправление виртуального хоста http по умолчанию (первый) на соответствующий https, например, mod_rewrite:
<VirtualHost *:80>
ServerName default.example.com
RewriteEngine On
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L]
</VirtualHost>
Любой другой подход для перенаправления http на https.