В настоящее время я использую CNAME, чтобы незаметно направлять весь трафик для http://cdn.domain.com в мой домен Rackspace Cloud Files по адресу http://cxxx.rxx.cxx.rackcdn.com.
Теперь я также хочу незаметно направлять весь HTTPS-трафик для https://cdn.domain.com к 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-сертификат для второго виртуального хоста, или он будет «позаимствовать» его у HTTPS-домена Rackspace?
Вам понадобится сертификат для cdn.domain.com
.
Вы не можете использовать CNAME, потому что когда браузер получает сертификат для cxxx.ssl.cxx.rackcdn.com
вместо того cdn.domain.com
, это вызовет ошибку, потому что сертификат не соответствует указанному вами URL. И при выполнении перенаправления в apache перенаправление происходит после того, как сеанс SSL установлен (и сертификат необходим для установления этого сеанса SSL ).
Другим решением было бы указать альтернативное имя в сертификате для cxxx.ssl.cxx.rackcdn.com
. В основном сертификат будет содержать оба cxxx.ssl.cxx.rackcdn.com
и cdn.domain.com
. Затем вы можете использовать CNAME, поскольку один и тот же сертификат действителен для обоих имен хостов (URL-адресов).
Вам понадобится один для вашего субдомена, так как все, что этот субдомен делает, это перенаправляет посетителей.
Я почти уверен, что вы не можете сделать это с CNAME.
Другой способ сделать это - перенаправить данные из HTTP-соединения в HTTPS-соединение Rackcdn следующим образом:
<VirtualHost *:80>
ServerName cdn.domain.com
RewriteEngine On
RewriteRule ^(.*)$ https://cxxx.rxx.cxx.rackcdn.com [L,R=301]
</VirtualHost>