Назад | Перейти на главную страницу

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

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

Желательно следующее поведение:

С моей текущей конфигурацией браузеры не будут подключаться к сайту по 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
}

Пожалуйста, попробуйте использовать метод ниже и обновите остальную информацию 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;
}

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

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; с участием listen 443; блокировать фактическое содержимое сайта, и server_name www.example.com; с участием listen 443; сделать редирект.