我在 Ubuntu 10.04.3 上的 Apache 别名方面遇到了问题
我正在尝试做的事情如下:-
- 端口 80 上的一个子域 (mydomain.domain.com) - 重定向到 mydomain.domain.com 的端口 443
端口 443 上的一个子域 (mydomain.domain.com),SSlEngine 已启用
端口 80 上的通配符子域名 (*.domain.com) - 重定向到 *.domain.com:443 的端口 443
- 端口 443 上的通配符子域名 (*.domain.com),SSlEngine 已启用
/etc/apache2/sites-available 文件夹中有一个文件
<VirtualHost *:80>
ServerName mydomain.domain.com
DocumentRoot /var/www/mydomain
DirectoryIndex index.cfm
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>
<VirtualHost *:443>
ServerName mydomain.domain.com:443
DocumentRoot /var/www/mydomain
DirectoryIndex index.cfm
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
RewriteRule ^([a-zA-Z0-9/_/-]+)$ /index.cfm%{REQUEST_URI} [PT]
SSLEngine on
SSLProtocol -all +SSLv3 +TLSv1
...
...
</VirtualHost>
<VirtualHost *:80>
ServerName something.domain.com
ServerAlias *.domain.com
DocumentRoot /var/www/mydomain_all
DirectoryIndex index.cfm
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>
<VirtualHost *:443>
ServerName something.domain.com:443
ServerAlias *.domain.com:443
DocumentRoot /var/www/mydomain_all
DirectoryIndex index.cfm
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
RewriteRule ^([a-zA-Z0-9/_/-]+)$ /index.cfm%{REQUEST_URI} [PT]
SSLEngine on
SSLProtocol -all +SSLv3 +TLSv1
...
...
</VirtualHost>
问题是,所有对 anything.domain.com 的请求实际上都转到第一个 ssl VH,即 mydomain.domain.com - 我的顺序错了吗? 还是其他问题?
答案1
您还需要一个NameVirtualHost *:443
指令来使端口上的第一个虚拟主机以外的其他虚拟主机正常运行。
根据您的 Apache 和 OpenSSL 版本,它可能会在启动期间发出有关 SSL 端口上的多个 vhost 的警告 - 请随意忽略它。
您是否对两个 SSL 虚拟主机使用相同的证书(希望是通配符),还是使用不同的证书?如果它们不同,则不支持 SNI 的连接客户端将始终获得第一个虚拟主机的证书。