如何配置 Nginx 进行 HTTPS
如何使用 Let’s Encrypt 在您的 Web 服务器上设置 HTTPS
最近,我使用官方的 Node.js droplet 在 DigitalOcean 上设置了一个 VPS,它会安装 Ubuntu Linux 并将 Node 和 Nginx 配置为反向代理,也就是说,它是用户和您的 Node.js 应用程序之间的中间人。
默认情况下,droplet 配置为使用 HTTP,但我们希望我们的应用程序使用 HTTPS,这是 HTTP 的安全版本。
因此,我们需要进行一些操作,包括使用 Certbot 通过 Let’s Encrypt 获取 SSL 证书,并配置 Nginx 使用该证书。
我们将按照以下步骤进行操作:
安装 Certbot 和 Certbot Nginx 包
以下说明假设您使用的是 Ubuntu、Debian 或任何使用 apt-get
管理软件包的其他 Linux 发行版:
1 | sudo apt-get install certbot python3-certbot-nginx |
设置 Nginx
编辑 /etc/nginx/sites-available/default
文件以设置正确的服务器名称(这对于 SSL 是必需的):
1 | sudo nano /etc/nginx/sites-available/default |
找到 server_name
行并输入您的域名:
1 | server_name my.domain.com; |
现在运行以下命令以重新加载带有更新配置的 Nginx:
1 | sudo systemctl reload nginx |
防火墙应已配置为接受 HTTPS,请输入 sudo ufw status
查看配置状态。您应该在列表中看到 Nginx Full
。如果只看到 Nginx HTTP
,请查找如何更改此配置。
使用 Certbot 生成 SSL 证书
现在,我们可以调用 Certbot 来生成 SSL 证书。您必须以 root 身份运行此命令:
1 | sudo certbot --nginx -d my.domain.com |
(当然,将 my.domain.com
更改为您的域名)
输入您的真实电子邮件地址,因为该地址将用于与您沟通任何问题。
我还建议选择将 HTTP 自动重定向至 HTTPS 的选项。
完了!
SSL 证书有效期为 90 天,并且 Certbot 已经设置了自动续订。要模拟和测试续订过程,请运行:
1 | sudo certbot renew --dry-run |
这应该会显示成功的消息。
至此,您的 Node 应用程序应该在 HTTPS 上成功运行,无需您进行其他更改。
tags: [“Nginx”, “HTTPS”, “SSL”, “Certbot”, “Let’s Encrypt”]