@orbit070

Что я делаю не так в настройке nginx + ssl?

Здравствуйте.
Есть сервер на котором два сайта - site1.com и site2.com и для обоих идентичным образом получались ssl-сертификаты(с помощью letsencrypt).

Вот что прописано в Nginx для первого сайта:

server {
        listen [::]:443 ssl ipv6only=on;
        listen 443 ssl;
        ssl_certificate /etc/letsencrypt/live/site1.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/site1.com/privkey.pem;
        include /etc/letsencrypt/options-ssl-nginx.conf;
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

        server_name site1.com;

        root /var/www/site1.com;

        index index.html;

        location / {
                try_files $uri $uri/ =404;
        }

        location ~ /\.ht {
               deny all;
        }

        if ($request_uri ~* "^(.*/)index\.html$") {
                return 301 $1;
        }

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/run/php/php7.2-fpm.sock;
        }
}

server {
	listen [::]:443 ssl;
	listen 443 ssl;
	server_name www.site1.com;
	return 301 https://site1.com$request_uri;
}

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


Хотелось чтобы любые способы набора адреса сайта редиректились на https://site1.com и вышеуказанная настройка полностью работает.

Теперь второй сайт для которого аналогичным образом получены сертификаты и вот его настройка:

server {
  charset utf-8;

  listen [::]:443 ssl;
  listen 443 ssl;
  ssl_certificate /etc/letsencrypt/live/site2.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/site2.com/privkey.pem;
  include /etc/letsencrypt/options-ssl-nginx.conf;
  ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

	server_name site2.com;

	location = /favicon.ico { access_log off; log_not_found off; }

	location /static/ {
		root /home/user/site2.com;
	}

	location /media/ {
		root /home/user/site2.com;
	}

    location / {
        include proxy_params;
        proxy_pass http://unix:/run/gunicorn_site2.sock;
    }
}

server {
	listen [::]:443 ssl; 
	listen 443 ssl;
	server_name www.site2.com;
	return 301 https://site2.com$request_uri;
}

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


То есть вроде бы все идентично.

Если набираю в строке site2.com - редирект работает, все отлично.
Если набираю в строке www.site2.com - редирект работает, все отлично.
Если набираю https://site2.com - все работает.

Но если набираю https://www.site2.com - то браузеры(пробовал с разных, куки очищал) выдают:
Подключение не защищено.
Не удалось подтвердить, что это сервер www.site2.com. Его сертификат безопасности относится к site1.com.


Что я сделал не так? у них же разные сертификаты и ссылки на эти сертификаты разные, каким образом сертификат site1 вмешался в сертификат site2 и почему это происходит именно для https://www.site2.com а для других случаев все в порядке? Буду благодарен за любую помощь
  • Вопрос задан
  • 147 просмотров
Решения вопроса 1
Lynn
@Lynn
nginx, js, css
В блоке с редиректом тоже надо указывать сертификат.
server {
  listen [::]:443 ssl; 
  listen 443 ssl;
  server_name www.site2.com;
  ssl_certificate /etc/letsencrypt/live/site2.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/site2.com/privkey.pem;
  return 301 https://site2.com$request_uri;
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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