「 简记往来」第十九篇:Nginx配置与HTTPS证书——让API安全可用
📅 2026/7/5 9:25:34
👁️ 阅读次数
📝 编程学习
一、为什么需要Nginx?
Node.js应用直接运行在3000端口上,直接用IP加端口访问:
http://你的IP:3000/api/xxx这种方式有几个问题:
- 不安全:没有HTTPS加密,数据明文传输
- 不专业:用户看到的是IP和端口,而不是域名
- 不方便:微信小程序要求API必须使用HTTPS
Nginx作为反向代理,可以解决所有这些问题。
二、Nginx安装与基本配置
sudoaptupdatesudoaptinstallnginxsudosystemctl start nginxsudosystemctlenablenginx反向代理配置:
# /etc/nginx/sites-available/jianji server { listen 80; server_name api.jianji.com; location / { proxy_pass http://localhost:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }启用配置:
sudoln-s/etc/nginx/sites-available/jianji /etc/nginx/sites-enabled/sudonginx-t# 测试配置是否正确sudosystemctl reload nginx三、HTTPS证书配置
微信小程序要求API必须使用HTTPS。简记往来使用Let’s Encrypt免费证书。
安装Certbot:
sudoaptinstallcertbot python3-certbot-nginx获取证书:
sudocertbot--nginx-dapi.jianji.comCertbot会自动修改Nginx配置,添加HTTPS支持,并设置自动续期。
配置HTTPS后的Nginx:
server { listen 443 ssl; server_name api.jianji.com; ssl_certificate /etc/letsencrypt/live/api.jianji.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/api.jianji.com/privkey.pem; location / { proxy_pass http://localhost:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } # HTTP自动跳转HTTPS server { listen 80; server_name api.jianji.com; return 301 https://$server_name$request_uri; }四、微信小程序合法域名配置
HTTPS配置完成后,需要在微信小程序后台配置合法域名:
路径:小程序后台 → 开发 → 开发管理 → 开发设置 → 服务器域名
将https://api.jianji.com添加到request合法域名中。
五、常见问题和排查
问题1:证书不被信任
- 确认使用的是Let’s Encrypt或其他受信任CA签发的证书
- 不要使用自签名证书
问题2:443端口不通
- 检查云服务器安全组是否开放443端口
- 检查防火墙:
sudo ufw allow 443/tcp
问题3:证书续期失败
- 确保80端口可访问(Certbot验证需要)
- 手动续期:
sudo certbot renew --dry-run
六、总结
Nginx + HTTPS 的配置流程:
- 安装Nginx→ 配置反向代理
- 获取SSL证书→ 使用Let’s Encrypt免费证书
- 配置HTTPS→ 修改Nginx配置
- 配置微信合法域名→ 在小程序后台添加
HTTPS是微信小程序的基本要求,也是用户信任的基础。
下一篇,我们来聊聊日志系统设计——没有日志,出了问题只能靠猜。
评论区聊聊:你的HTTPS配置遇到过什么坑?
编程学习
技术分享
实战经验