我正在使用 Webmin 和 Apache 2 为我的几个网站设置公共网络服务器。
使用 Webmin 添加虚拟主机及其特殊选项相当简单。
但是,我需要一些关于如何使用相同选项设置 http 和 https 配置的建议。
目前,我的方法是添加两个虚拟主机,一个用于端口 80,一个用于端口 443。这样会创建两个单独的 .conf 文件。问题是,每次我向一个虚拟主机添加选项时,我必须记住也为另一个虚拟主机执行相同的操作。
如何避免每个站点的选项出现冗余?
我知道“Include”指令,但如何使用 Webmin 有效地管理它,以免 Webmin 感到困惑?我想我必须先手动创建包含文件并将一些指令移入其中,然后再使用 SSL 选项添加第二个虚拟主机?
其他人如何处理这个问题?
基本上就像这个问题,但加入了 Webmin。
答案1
我如何使用 Webmin 有效地管理这个问题?
Webmin 仅允许配置其基于 Web 的界面上的功能。这就是为什么常规配置方法不起作用的原因,而涉及 Web 配置面板的问题则被认为是题外话。配置的简易性可能意味着两件不同的事情,你不能同时拥有它们:
如何使用相同的选项设置 http 和 https 配置?
没有 Webmin。如果这是目标,您可以使用 sInclude
和宏。如果您有多个具有相同设置的主机名,并且您定期更改它们的某些设置,则最好创建一个<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 的任何其他方法。