使用 Webmin + Apache 避免 http 和 https 虚拟主机冗余

使用 Webmin + Apache 避免 http 和 https 虚拟主机冗余

我正在使用 Webmin 和 Apache 2 为我的几个网站设置公共网络服务器。

使用 Webmin 添加虚拟主机及其特殊选项相当简单。

但是,我需要一些关于如何使用相同选项设置 http 和 https 配置的建议。

目前,我的方法是添加两个虚拟主机,一个用于端口 80,一个用于端口 443。这样会创建两个单独的 .conf 文件。问题是,每次我向一个虚拟主机添加选项时,我必须记住也为另一个虚拟主机执行相同的操作。

如何避免每个站点的选项出现冗余?

我知道“Include”指令,但如何使用 Webmin 有效地管理它,以免 Webmin 感到困惑?我想我必须先手动创建包含文件并将一些指令移入其中,然后再使用 SSL 选项添加第二个虚拟主机?

其他人如何处理这个问题?

基本上就像这个问题,但加入了 Webmin。

答案1

我如何使用 Webmin 有效地管理这个问题?

Webmin 仅允许配置其基于 Web 的界面上的功能。这就是为什么常规配置方法不起作用的原因,而涉及 Web 配置面板的问题则被认为是题外话。配置的简易性可能意味着两件不同的事情,你不能同时拥有它们:

  • 无需了解配置文件=>Web 配置面板即可轻松使用。
  • 易于管理和重现 => 使用配置文件Include年代, ETC。

如何使用相同的选项设置 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 的任何其他方法。

相关内容