我目前使用CNAME默默地将http://cdn.domain.com的所有stream量导向到http://cxxx.rxx.cxx.rackcdn.com上的Rackspace Cloud Files域。
现在我也想静静地将https://cdn.domain.com的所有HTTPSstream量指向https://cxxx.ssl.cxx.rackcdn.com 。
我假设我不能使用CNAME来做到这一点(如果可以的话,血腥的优秀!),所以我会使用VirtualHosts,如:
<VirtualHost *:80> ServerName cdn.domain.com RewriteEngine On RewriteRule ^(.*)$ http://cxxx.rxx.cxx.rackcdn.com [L,R=301] </VirtualHost> <VirtualHost *:443> ServerName cdn.domain.com RewriteEngine On RewriteRule ^(.*)$ https://cxxx.ssl.cxx.rackcdn.com [L,R=301] </VirtualHost>
我需要第二个虚拟主机的SSL证书,还是会从Rackspace的HTTPS domian中“借”它?
您将需要cdn.domain.com的证书。
你不能使用CNAME,因为当浏览器获取cxxx.ssl.cxx.rackcdn.com的证书而不是cdn.domain.com ,它会抛出一个错误,因为证书与你放的URL不匹配在Apache中进行redirect时,redirect发生在SSL会话build立之后(并且需要证书来build立SSL会话)。
另一个解决scheme是在cxxx.ssl.cxx.rackcdn.com的证书中提供一个alt名字。 基本上,该证书将包含cxxx.ssl.cxx.rackcdn.com和cdn.domain.com 。 您可以使用CNAME,因为相同的证书对于这两个主机名(URL)都是有效的。
您将需要一个子域名,因为该子域名所做的就是redirect访问者。
我很确定你不能用CNAME做这个。
另一种方法是将数据从HTTP连接redirect到HTTPS rackcdn连接,如下所示:
<VirtualHost *:80> ServerName cdn.domain.com RewriteEngine On RewriteRule ^(.*)$ https://cxxx.rxx.cxx.rackcdn.com [L,R=301] </VirtualHost>