winDeD
@winDeD

Два сайта SSL на NGINX. Почему www перебрасывает на соседний сайт?

Добрый день, есть 2 сайта с SSL сертификатами.

Проблема:
Если запрос:
curl -I https://www.1111.com ответ правильный: https://1111.com


Но если такой же запрос на второй сайт:

curl -I https://www.2222.com ответ: 
(curl: (51) SSL: no alternative certificate subject name matches target host name 'www.1111.com')

curl -I http://www.2222.com ответ: https://1111.com


Если изменить порядок загрузки конфигов в nginx.conf - тогда ответы меняются местами и такая ошибка выпадает на 1111.com сайт.

1111.conf
server {
    listen  80;
    server_name 1111.com www.1111.com;
    return 301 https://1111.com;$request_uri;
}

server {
    listen 443 ssl http2;
    server_name 1111.com;
    root /usr/share/nginx/1111.com;
    index index.php;
...


В 2222.conf настройки такие же.

Как настроить сервер так - чтобы запросы от: https://www.* | http://www.* - перенаправлялись на https://*.com ?
  • Вопрос задан
  • 761 просмотр
Решения вопроса 1
winDeD
@winDeD Автор вопроса
Вот правильная настройка:

server {
      listen   80;
      server_name site.ru www.site.ru;
      rewrite  ^(.*) https://$server_name$1 permanent;
    }
    server {
      listen   443   ssl http2;
      include ssl/ssl_site.ru;
      server_name  www.site.ru;
      rewrite ^(.*) https://site.ru$1 permanent;
    }
    server {
      listen   443   ssl http2;
      server_name site.ru;
      include ssl/ssl_site.ru;

    ... other config string ...
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Frankenstine
@Frankenstine
Сисадмин
Комментировать
denisemenov
@denisemenov
Ну или так:
server {
    listen      %ip%:%web_port%;
    server_name %domain_idn% %alias_idn%;
    return 301  https://%domain_idn%$request_uri;
}

server {
    listen      %ip%:%web_ssl_port% http2 ssl;
    server_name %alias_idn%;
    return 301  https://%domain_idn%$request_uri;
    
    ssl         on;
    ssl_certificate      %ssl_pem%;
    ssl_certificate_key  %ssl_key%;
}

server {
    listen      %ip%:%web_ssl_port% http2 ssl;
    server_name %domain_idn%;
    root        %sdocroot%;
    index       index.php index.html index.htm;

    ssl         on;
    ssl_certificate      %ssl_pem%;
    ssl_certificate_key  %ssl_key%;

    location / {

    }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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