网站别再 HTTP 裸奔:Nginx + Let's Encrypt,十分钟配好免费 HTTPS

举报
yd_260072176 发表于 2026/10/31 10:10:41 2026/10/31
【摘要】 网站别再 HTTP 裸奔:Nginx + Let’s Encrypt,十分钟配好免费 HTTPS昨天那篇讲了 Nginx 反向代理:把多个应用收敛到 80 端口统一接客。好处里提过一条"统一做 HTTPS"——今天就把这条兑现:给网站配一张免费证书,让浏览器地址栏从"不安全"变成小锁头。 为什么非上 HTTPS 不可三条现实理由:第一,Chrome、Firefox 对纯 HTTP 页面直接标...

网站别再 HTTP 裸奔:Nginx + Let’s Encrypt,十分钟配好免费 HTTPS

昨天那篇讲了 Nginx 反向代理:把多个应用收敛到 80 端口统一接客。好处里提过一条"统一做 HTTPS"——今天就把这条兑现:给网站配一张免费证书,让浏览器地址栏从"不安全"变成小锁头。

为什么非上 HTTPS 不可

三条现实理由:第一,Chrome、Firefox 对纯 HTTP 页面直接标"不安全",用户看到先怯三分;第二,登录密码、表单、Cookie 全是明文传输,同一 WiFi 下抓包即得;第三,搜索引擎给 HTTPS 加权。证书不用买,Let’s Encrypt 免费、到期自动续,个人博客和中小项目完全够用。

前置条件就两个:域名已经解析到你的服务器(A 记录指过去),Nginx 已经在跑 80 端口——正好是昨天的起点。

第一步:装 certbot

Debian / Ubuntu 上有两条路,推荐 snap(版本最新,续期逻辑最稳):

sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot

不想用 snap 就走 apt:sudo apt install certbot python3-certbot-nginx,功能一样,只是版本稍旧。

第二步:一条命令申请证书

sudo certbot --nginx -d 你的域名

certbot 会先验证"你是不是这个域名的真主人":它往 Nginx 里临时插一段配置,在 http://你的域名/.well-known/acme-challenge/ 下面放一个随机文件,Let’s Encrypt 的服务器能取到就放行。所以这一步要求 80 端口对外可达、域名解析正确——排错见后文。

过程中它会问联系邮箱(证书到期前发提醒用,填"你的邮箱"即可),以及是否把 HTTP 自动跳转到 HTTPS,选"是"。

第三步:看看 certbot 动了 Nginx 的哪些地方

证书落到 /etc/letsencrypt/live/你的域名/,两个关键文件:fullchain.pem(证书链)和 privkey.pem(私钥)。certbot 在你的 server 块里加了这几行:

listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/你的域名/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/你的域名/privkey.pem;

还顺手加了一个 80 端口的 server 块做 301 跳转。改完先 nginx -t 检查语法,再 systemctl reload nginx 生效——reload 不丢现有连接,比 restart 温柔(systemd 那篇讲过)。

第四步:验证与续期

浏览器打开 https://你的域名,小锁头出现;再打开 http:// 版,应该 301 跳到 https 版。证书有效期 90 天,certbot 安装时已经顺手装好了自动续期(snap 版是 systemd timer,apt 版是 cron),手动验一次心里有数:

sudo certbot renew --dry-run

显示成功,以后就不用再管了。

排错三件套

  1. 验证失败先查域名:dig 你的域名 +short 看返回的 IP 对不对得上你的服务器;curl -v http://你的域名/ 看请求到底到没到 Nginx。分层排障的思路和昨天那篇一样。
  2. 80 端口被占:如果 80 上跑的不是 Nginx(比如某个应用直接占了 80),certbot 的临时验证文件就插不进去。先 ss -tlnp | grep :80 看看是谁在监听。
  3. 锁头有了但浏览器报"混合内容":页面里还引用了 http:// 开头的图片或 JS。把站内资源全改成相对路径或 https,警告消失。

收尾

昨天的反向代理解决"多个应用怎么统一接客",今天的证书解决"接客安不安全"。两者一拼,就是一套完整形态:80 收敛流量 → 301 跳 https → 443 挂证书 → proxy_pass 分发到后端。下一篇可以讲"后端只监听 127.0.0.1 时,Nginx 这一层的限流怎么做",把"统一做缓存限流"这条也兑现。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。