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;

        ...
Другие вопросы по тегам