/etc/nginx/sites-available/example.com
server { listen 80; server_name example.com; include snippets/letsencrypt.conf; return 301 https://$host$request_uri; } server { listen 443 ssl http2; server_name ; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem; include snippets/ssl.conf; include snippets/letsencrypt.conf; return 301 https://example.com$request_uri; } server { listen 443 ssl http2; server_name example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem; include snippets/ssl.conf; include snippets/letsencrypt.conf; # . . . other code }通过上面的配置,我们强制 HTTPS 并从 www 重定向到非 www 版本。
重新加载 Nginx 服务以使更改生效:
sudo systemctl reload nginx 自动续订让我们加密 SSL 证书我们的加密证书有效期为90天。 要在证书过期之前自动续订证书,certbo t包会创建一个 cronjob,每天运行两次,并在到期前30天自动续订任何证书。
由于我们在续订证书后使用 certbot webroot 插件,因此我们还必须重新加载 nginx 服务。 将 --renew-hook“systemctl reload nginx”附加到 /etc/cron.d/certbot 文件,使其如下所示:
sudo nano /etc/cron.d/certbot
0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && certbot -q renew --renew-hook "systemctl reload nginx"
要测试续订过程,可以使用 certbot --dry-run 开关:
sudo certbot renew --dry-run
如果没有错误,则表示续订过程成功。
总结在本教程中,您使用了Let的加密客户端 certbot 来下载域的 SSL 证书。 您还创建了 Nginx 代码段以避免重复代码并配置 Nginx 以使用证书。 在本教程结束时,您已设置了一个用于自动证书续订的 cronjob。