#ssl #nginx #ssl-certificate
#ssl #nginx #ssl-сертификат
Вопрос:
У меня есть пара перенаправлений, чтобы убедиться, что все домены и варианты указывают на текущее основное местоположение:
#redirects www
server {
server_name www.blah.net;
return 301 https://blah.org$request_uri;
}
server {
server_name www.blah.co;
return 301 https://blah.org$request_uri;
}
#redirects co and net to org
server {
server_name blah.co;
return 301 https://blah.org$request_uri;
}
server {
server_name blah.net;
return 301 https://blah.org$request_uri;
}
#redirects all traffic to https
server {
listen *:80 default_server;
location / {
return 301 https://$host$request_uri;
}
}
#main server
server {
listen *:443 ssl;
ssl on;
ssl_certificate /etc/letsencrypt/live/www.blah.org/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.blah.org/privkey.pem;
root /home/blah/www;
index index.html index.htm;
server_name blah.org blah.co blah.net;
}
Проблема в том, что в наших лучших результатах поиска Google есть ссылка, которая указывает https://blah.co
, и при нажатии на нее выдается ошибка сертификата. Я понимаю, в чем проблема, я просто понятия не имею, как исправить перенаправления, чтобы, когда кто-то нажимает на ссылку, которая включает https
или вводит, https://blah.co
она разрешалась https://blah.org
.
Комментарии:
1. Получите действительный сертификат для
blah.co
2. @AlexeyTen Смысл в том, чтобы избежать этого — и перенаправить весь трафик на blah.org это единственный сайт, у которого есть действительный сертификат.
3. Смысл https в том, чтобы сделать невозможным избежать этого
Ответ №1:
Я думаю, что что-то подобное сработает. Первый блок должен перехватывать любой трафик, который не https://blah.org , и перенаправить его. И второй серверный блок обрабатывает только blah.org домен.
# redirects all non-.org traffic to https
server {
listen *:80 default_server;
listen *:443 ssl;
ssl_certificate /etc/letsencrypt/live/www.blah.org/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.blah.org/privkey.pem;
server_name _;
location / {
return 301 https://blah.org$request_uri;
}
}
#main server
server {
listen *:443 ssl;
ssl on;
ssl_certificate /etc/letsencrypt/live/www.blah.org/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.blah.org/privkey.pem;
root /home/blah/www;
index index.html index.htm;
server_name blah.org;
}
Комментарии:
1. Для этого все еще нужны действительные сертификаты
2.@AlexeyTen Я не спорю с вами, однако у меня есть обратная ситуация, работающая в производственной среде. Мы 301 перенаправляем весь
non-https
non-www
трафик на domain.com , и у нас есть только подстановочный ssl-сертификат. Дажеhttp://ip-address
перенаправляет правильно.