Nginx с ошибкой SSL-соединения

Я пытаюсь перенести сайт с HTTP на HTTPS, однако мой nginx (версия: 1.10. 3) похоже, что конфигурация не работает.

Требуется следующее поведение:

  • http://www.example.com/path/to/content должен перенаправлять на https: // example .com / path / to / content
  • http://example.com/path/to/content должен перенаправлять на https://example.com/path/to/content
  • https. : //www.example.com/path/to/content должен перенаправить на https://example.com/path/to/content

С моей текущей конфигурацией браузеры не будут подключаться к сайту, используя HTTPS:

server {
    listen 80;
    listen [::]:80;

    server_name www.example.com example.com;

    # redirects both www and non-www to https
    rewrite ^(.*) https://www.example.com$1 permanent;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name example.com;

    # redirects non-www to www
    rewrite ^(.*) https://www.example.com$1 permanent;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    include snippets/ssl-example.com.conf;
    include snippets/ssl-params.conf;

    charset utf-8;

    # rest of my config
}
  • Что мне нужно изменить для достижения вышеупомянутого поведения?
  • Можно ли принимать (а затем перенаправлять) HTTP-запросы на первом этапе, чтобы страница оставалась активной и позволяла мне ее протестировать?
  • Мой сайт имеет очень хороший рейтинг SEO (индексируется как « http://www.example.com »), поэтому правильное перенаправление является обязательным.
1
задан 1 March 2017 в 10:43
2 ответа

Эта конфигурация делает то, о чем вы спрашиваете:

server {
    listen 80;
    listen [::]:80;

    server_name www.example.com example.com;

    # redirects both www and non-www to https
    return 301 https://example.com$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name www.example.com;

    include snippets/ssl-example.com.conf;
    include snippets/ssl-params.conf;

    # redirects www to non-www
    return 301 https://example.com$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name example.com;

    include snippets/ssl-example.com.conf;
    include snippets/ssl-params.conf;

    charset utf-8;

    # rest of my config
}

Я изменил rewrite на return , так как это немного более эффективно. С return нужно использовать $ request_uri , чтобы получить путь запроса и аргументы в URL перенаправления.

Затем я изменил server_name example.com; с слушать 443; блок для обслуживания фактического содержимого сайта и имя_сервера www.example.com; с слушать 443; для перенаправления.

]
1
ответ дан 3 December 2019 в 20:27

Попробуйте использовать метод ниже и обновите остальную информацию ssl:

server {  
       listen 80;  
       listen [::]:80;  
       server_name www.example.com example.com;
       return 301 https://www.example.com$request_uri;  
}  

И для ssl укажите путь ключа ssl:

server {  
 listen   443 ssl;
 ssl on;  
 ssl_prefer_server_ciphers   on;  
 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;  
  ssl_certificate      /path of certificate;  
 ssl_certificate_key  /path of server.key;
}
1
ответ дан 3 December 2019 в 20:27

Теги

Похожие вопросы