多个HTTPS(certbot)域的一个nginx配置

多个HTTPS(certbot)域的一个nginx配置,nginx,certbot,Nginx,Certbot,现在我对许多域使用一个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.ph

现在我对许多域使用一个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


是否也可以对所有域使用一个配置?如何为不同的域指定密钥路径?

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可能有限制或完全不允许多个域)