@WSGlebKavash

Как настроить nginx для нескольких адресов и доменов?

У сервера есть несколько ip-адресов и доменов, с которыми он может работать. Как настроить nginx так, чтоб для каждого адреса или домена он отдавал свой tls-сертификат?
текущий конфиг:
server {
              listen *:80;
              # listen 443 http3 reuseport;
              listen *:443 ssl;

              root /var/www/trainzcity.myftp.org/html;
              index index.html index.htm index.nginx-debian.html;

              server_name trainzcity.myftp.org;

              ssl_certificate     /etc/nginx/certs/0001_chain.pem;
              ssl_certificate_key /etc/nginx/certs/key-384r1.key;
              ssl_protocols       TLSv1.3;


              location / {
                   try_files $uri $uri/ =404;
              }
        }
        server {
              listen *:80;
              # listen 443 http3 reuseport;
              listen *:443 ssl;

              root /var/www/trainzcity.myftp.org/html;
              index index.html index.htm index.nginx-debian.html;

              server_name nix-adserver nix-adserver.trainzcity.myftp.org;

              ssl_certificate     /path/to/pki/nix-adserver.trainzcity.myftp.org.crt;
              ssl_certificate_key /path/to/pki/nix-adserver.trainzcity.myftp.org.key;
              ssl_protocols       TLSv1.3;


              location / {
                     try_files $uri $uri/ =404;
              }
        }
        server {
              listen 80;
              # listen 192.168.10.2:443 http3 reuseport;
              listen 443 ssl;

              root /var/www/trainzcity.myftp.org/html;
              index index.html index.htm index.nginx-debian.html;

              server_name 192.168.10.2;

              ssl_certificate     /path/to/pki/trainzcity.myftp.org.crt;
              ssl_certificate_key /path/to/pki/trainzcity.myftp.org.key;
              ssl_protocols       TLSv1.3;


              location / {
                     try_files $uri $uri/ =404;
              }
        }
        server {
               listen *:80;
               # listen 443 http3 reuseport;
               listen *:443 ssl;

               root /var/www/trainzcity.myftp.org/html;
               index index.html index.htm index.nginx-debian.html;

               server_name 1.1.1.1;

               ssl_certificate     /path/to/pki/rainzcity.myftp.org.crt;
               ssl_certificate_key /path/to/pki/trainzcity.myftp.org.key;
               ssl_protocols       TLSv1.3;


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

Пояснения:
nix-adserver - короткое (NetBIOS) имя сервера
nix-adserver.trainzcity.myftp.org - полное доменное имя сервера
trainzcity.myftp.org - внешнее доменное имя сервера, доступное из интернета
192.168.10.2 - внутренний IP-адрес сервера, маршрутизирующийся в локальной сети
1.1.1.1 - внешний IP-адрес сервера, маршрутизирующийся в интернете
  • Вопрос задан
  • 2455 просмотров
Пригласить эксперта
Ответы на вопрос 1
karabanov
@karabanov Куратор тега Ubuntu
Системный администратор
Такого будет достаточно:
server {
      listen 80;
      # listen 443 http3 reuseport;
      listen 443 ssl;

      root /var/www/trainzcity.myftp.org/html;
      index index.html index.htm index.nginx-debian.html;

      server_name trainzcity.myftp.org;

      ssl_certificate     /etc/nginx/certs/0001_chain.pem;
      ssl_certificate_key /etc/nginx/certs/key-384r1.key;
      ssl_protocols       TLSv1.3;


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

server {
      listen 80;
      # listen 443 http3 reuseport;
      listen 443 ssl;

      root /var/www/trainzcity.myftp.org/html;
      index index.html index.htm index.nginx-debian.html;

      server_name nix-adserver.trainzcity.myftp.org;

      ssl_certificate     /path/to/pki/nix-adserver.trainzcity.myftp.org.crt;
      ssl_certificate_key /path/to/pki/nix-adserver.trainzcity.myftp.org.key;
      ssl_protocols       TLSv1.3;

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

Нет смысла копировать конифиги для отдельных IP. Директивы listen 80 и listen 443 ssl и так позволяют Nginx слушать на всех интерфейсах.

На самом деле достаточно вообще одной секции сервер, не понятно зачем тебе это внутреннее имя. Если подробнее опишешь какую цель преследуешь могу дополнить конфиг.
Ответ написан
Ваш ответ на вопрос

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

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