apache-2.2 – 我可以在Apache conf中的同一个VirtualHost中定义HTTP和HTTPS吗?

我有一个很大的VirtualHost定义,我不想复制,因此该网站也将通过HTTPS运行.

这就是我想要做的:

<VirtualHost *>
    ServerName example.com

    <If port=443>
        SSLEngine on
        SSLCertificateFile ...
        SSLCertificateKeyFile ...
        SSLCertificateChainFile ...
    </If>

    (other config)

</VirtualHost>

有办法做到这一点吗?
我错过了一些不重复配置的方法吗?

目前稳定版的Apache(2.2)没有这个功能,但2.4确实有IF directive.

您现在必须创建两个VirtualHost,但您可以通过环境或apache全局变量设置一些内容,并在虚拟主机配置中使用它(例如设置文档).这样,如果你想改变它,你可以只用一行修改就可以做到.

当然,您可以使用include来执行以下操作:

<VirtualHost *:80>
        include /etc/apache2/vhost.conf.d/site1
</VirtualHost>

<VirtualHost *:443>
        include /etc/apache2/vhost.conf.d/site1
        include /etc/apache2/vhost.conf.d/site1-ssl
</VirtualHost>

ps:SNI将成为IPv6改编之前的主流.所有主流浏览器都支持它,假设您使用的是支持的操作系统.

编辑:当fooquency发现你不能把SSLEngine On放到If块上所以我的答案是错误的.

翻译自:https://serverfault.com/questions/213103/can-i-define-http-and-https-in-the-same-virtualhost-in-apache-conf

转载注明原文:apache-2.2 – 我可以在Apache conf中的同一个VirtualHost中定义HTTP和HTTPS吗?