Одна конфигурация nginx для нескольких доменов HTTPS (certbot) - PullRequest
2 голосов
/ 08 мая 2020

Сейчас я использую одну nginx конфигурацию для многих доменов.

server {
        listen 80 default_server;
        listen [::]:80 default_server;

        root /home/user/default;
        index index.php;
        server_name _;
        location / {
                try_files $uri $uri/ /index.php?$args;
        }
        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/run/php/php7.2-fpm.sock;
        }
}

Я хочу перевести сайты на протокол https, буду использовать CertBot.

Возможно ли также использовать один конфиг для всех доменов? Как указать ключевые пути для разных доменов?

1 Ответ

1 голос
/ 11 мая 2020

Nginx не может использовать имена пользовательских переменных для путей к файлам сертификатов SSL, поэтому вам понадобятся блоки server для каждого хоста, определяющего файлы. Вы можете разбить конфигурацию на модули с помощью include

server {
  include conf.d/includes/common.conf;

  host example1.com www.example1.com;  

  ssl_certificate         /etc/nginx/ssl/example1.com/cert.cer;
  ssl_certificate_key     /etc/nginx/ssl/example1.com/privkey.cer;
  ssl_trusted_certificate /etc/nginx/ssl/example1.com/ca.cer;
}

common.conf

listen 443 ssl http2;
listen [::]:443 ssl http2;

root /home/user/$host;
access_log /var/log/nginx/$host-access.log;
error_log  /var/log/nginx/$host-error.log;

ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4;

index index.php;

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

Другая идея - использовать сертификат с подстановочными знаками для домена или потенциально использовать сертификат Certbot, который обслуживает несколько доменов, обновляя его каждый раз, когда должен быть добавлен новый домен (никогда не пробовал, и Certbot может иметь ограничения или полностью запрещать использование нескольких доменов)

...