Nginx: перенаправить веб-сайт по умолчанию http на https
У меня есть веб-сайт, с которым может быть связано неизвестное количество записей DNS CNAME. Мне нужно, чтобы ЛЮБЫЕ HTTP-запросы были перенаправлены на https. Мы будем использовать сертификат по умолчанию. Независимо от того, введен ли в браузере IP-адрес или DNS-имя, все они должны быть перенаправлены на https
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
return 301 https://$host$request_uri;
я пытался $server_name
а также.. Если я перейду на http://, он перенаправит меня на " https://_/". Есть ли эквивалент RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}
в апаче?
2 ответа
Кажется, что nginx имеет эквивалент HTTP_HOST в Apache. Так что это работает для меня:
return 301 https://$http_host$request_uri;
Правильный способ сделать редирект Nginx - использовать HTTP 301, а не переписывать. Смотрите здесь
Что касается настройки вашего сервера, см. Мой ниже. Я определяю имя сервера на порту 80, затем перенаправляю на HTTPS на порт 443. Все (настройки SSL, корень, индекс и т. Д.) Применяется к этому блоку сервера HTTPS.
server {
listen 80 default_server; #Listen on IPv4
listen [::]:80; #Listen on IPv6
server_name loganmarchione.com;
return 301 https://$host$request_uri; #Redirect HTTP to HTTPS
}
server {
listen 443 ssl spdy; #Listen on IPv4
listen [::]:443 ssl spdy; #Listen on IPv6
ssl_certificate /etc/nginx/ssl/unified2.crt;
ssl_certificate_key /etc/nginx/ssl/my-private-decrypted.key;
...