httpd重定向SSL和子域名/虚拟主机

时间:2015-08-25 02:14:12

标签: apache redirect ssl https

我试图设置http - > https重定向的子域名在我的网站上,由Apache提供(版本:2.2.31)。我购买了一个为我的主站点(www.domain.com)正确安装的通配符SSL证书,因为我在地址旁边有一个绿色锁,所以应该完成该部分。

问题:浏览到subdomain.domain.com重定向到www.domain.com,我无法找出原因。我一直在阅读和关注this页以及其他几个内容相似的网页,但我错过了关键要素。

主网站由/var/www/html提供,子网域由/var/www/vhosts/subdomain提供。另外,我收到此错误:

[warn] _default_ VirtualHost overlap on port 443, the first has precedence

这是/etc/httpd/conf/httpd.conf的vhost部分:

NameVirtualHost *:80
<VirtualHost *:80>
    ServerName  www.domain.com
    ServerAlias www.domain.com
    #Redirect permanent / https://www.domain.com
    Redirect 302 / https://www.domain.com
</VirtualHost>

<VirtualHost *:80>
    ServerName  subdomain.domain.com
    ServerAlias subdomain.domain.com
    #Redirect permanent / https://subdomain.domain.com
    Redirect 302 / https://subdomain.domain.com
</VirtualHost>

这里/etc/httpd/conf.d/ssl.conf

<VirtualHost *:443>
    ServerName  www.domain.com
    ServerAlias www.domain.com
    DocumentRoot /var/www/html
    ...
    SSLEngine on
    SSLProtocol all -SSLv2
    SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
    SSLCertificateFile        /path/to/cert
    SSLCertificateKeyFile     /path/to/key
    SSLCertificateChainFile   /path/to/bundle
</VirtualHost>

<VirtualHost *:443>
    ServerName  subdomain.domain.com
    ServerAlias subdomain.domain.com
    DocumentRoot /var/www/vhosts/subdomain
    ...
    SSLEngine on
    SSLProtocol all -SSLv2
    SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
    SSLCertificateFile        /path/to/cert
    SSLCertificateKeyFile     /path/to/key
    SSLCertificateChainFile   /path/to/bundle
</VirtualHost>

此处的apachectl -S输出(我的域名已编辑/替换):

enter image description here

非常感谢任何帮助。

=============================================== ========================

修改:我删除了“永久”一词,清除了我的缓存,问题仍然存在。这似乎与警告有关,对吗?

此外,无论我使用subdomain哪个subdomain即使它不存在,我也能获得成功的回复。我可以输入http://<anything>.domain.com所需的任何内容,然后进入主站点。 https://<anything>.domain.com和{{1}}都使用https加载主网站。

1 个答案:

答案 0 :(得分:2)

问题很简单,但难以理解,至少对我而言。在/etc/httpd/conf.d/ssl.conf中,我需要为VirtualHost配置添加以下行以使其不同:

NameVirtualHost *:443

现在一切都按预期工作了。