У меня есть установка Nginx, которая должна работать с SSL. Мои серверные блоки для этого домена следующие, что заставляет example.com
и www.example.com
быть направленным к https://example.com
.
server {
listen 9.9.9.9:80;
server_name example.com;
return 301 https://$host$request_uri;
}
server { listen 443 ssl http2; server_name www.example.com; return 301 $scheme://example.com$request_uri; }
server {
## SSL settings
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
server_name example.com;
root /home/example;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
include common.conf;
include ssl.conf;
}
По сути, это работает. Материал Lets Encrypt установлен правильно. Однако у меня также есть несколько поддоменов, которые являются CNAME для Cloudfront. Так что это похоже на cdn.example.com
. Как я могу убедиться, что они тоже работают и не перенаправляют на https://example.com?
В Cloudfront сертификат Cloudfront по умолчанию включен для этих CNAME:
SSL Certificate - Default CloudFront Certificate (*.cloudfront.net)
Это проблема?
Проблема в том, что когда я захожу на этот сайт, https://example.com
, загружается весь контент, но изображения, файлы CSS и JS (загружаются через cdn.example.com
Cloudfront cname) НЕ загружаются. Chrome показывает красный значок «небезопасно» в адресной строке для этих ресурсов и большое сообщение об ошибке: http://imgur.com/4sGWuIY
Как правильно включить мои собственные пути CNAME CDN вместе с доменом? Спасибо за любые указатели.
Начнем с предположения:
ваш файл зоны DNS выглядит примерно так:
$ORIGIN example.com
IN A 9.9.9.9
www IN A 9.9.9.9
cdn IN CNAME some-subdomain-at.cloudfront.net.
В этом случае ваш веб-сервер (9.9.9.9) никогда не должен видеть запросы, принадлежащие cdn.example.com.
Зачем?
https://cdn.example.com/default.css
браузер запросит адрес IPv4 / IPv6 (A / AAAA) для cdn.example.com, не получите ничего и попробуйте CNAME, чтобы получить его some-subdomain-at.cloudfront.net.
как ответ. Теперь браузер попытается получить IP-адрес some-subdomain-at.cloudfront.net.
и начать общение с этим адресом, как если бы это была запись A для cdn.example.com
.