Как правильно настроить Nginx под два домена и два сертификата?

Для настройки Nginx под два домена и два сертификата вам потребуется выполнить несколько шагов. Приведу подробный пример настройки:

  1. Установите Nginx на ваш сервер, если он не установлен:
sudo apt install nginx
  1. Создайте директории для хранения конфигураций, файлов сайтов и сертификатов:
sudo mkdir /etc/nginx/sites-available
sudo mkdir /etc/nginx/sites-enabled
sudo mkdir /var/www/domain1
sudo mkdir /var/www/domain2
  1. Создайте конфигурационные файлы для каждого домена:

Создайте файл /etc/nginx/sites-available/domain1.com и добавьте в него следующее содержимое:

server {
    listen 80;
    server_name domain1.com www.domain1.com;
    root /var/www/domain1;
    index index.html;

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

Создайте файл /etc/nginx/sites-available/domain2.com и добавьте в него следующее содержимое:

server {
    listen 80;
    server_name domain2.com www.domain2.com;
    root /var/www/domain2;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}
  1. Создайте символьные ссылки для активации конфигураций:
sudo ln -s /etc/nginx/sites-available/domain1.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/domain2.com /etc/nginx/sites-enabled/
  1. Получите и установите SSL-сертификаты для каждого домена. Для этого лучше воспользоваться Certbot:
sudo apt install certbot
sudo certbot certonly --webroot -w /var/www/domain1 -d domain1.com -d www.domain1.com
sudo certbot certonly --webroot -w /var/www/domain2 -d domain2.com -d www.domain2.com
  1. Обновите конфигурационные файлы для каждого домена, добавив настройки SSL:
server {
    listen 443 ssl;
    server_name domain1.com www.domain1.com;
    root /var/www/domain1;
    index index.html;

    ssl_certificate /etc/letsencrypt/live/domain1.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/domain1.com/privkey.pem;

    location / {
        try_files $uri $uri/ =404;
    }
}
server {
    listen 443 ssl;
    server_name domain2.com www.domain2.com;
    root /var/www/domain2;
    index index.html;

    ssl_certificate /etc/letsencrypt/live/domain2.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/domain2.com/privkey.pem;

    location / {
        try_files $uri $uri/ =404;
    }
}
  1. Добавьте редирект с HTTP на HTTPS для каждого сервера:
server {
    listen 80;
    server_name domain1.com www.domain1.com;
    return 301 https://domain1.com$request_uri;
}

server {
    listen 80;
    server_name domain2.com www.domain2.com;
    return 301 https://domain2.com$request_uri;
}
  1. Перезапустите Nginx для применения изменений:
sudo systemctl restart nginx

После выполнения всех этих шагов, у вас должны корректно работать два домена с различными сертификатами на сервере Nginx.