当前位置: 首页 > news >正文

「 简记往来」第十九篇:Nginx配置与HTTPS证书——让API安全可用

一、为什么需要Nginx?

Node.js应用直接运行在3000端口上,直接用IP加端口访问:

http://你的IP:3000/api/xxx

这种方式有几个问题:

  1. 不安全:没有HTTPS加密,数据明文传输
  2. 不专业:用户看到的是IP和端口,而不是域名
  3. 不方便:微信小程序要求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.com

Certbot会自动修改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 的配置流程:

  1. 安装Nginx→ 配置反向代理
  2. 获取SSL证书→ 使用Let’s Encrypt免费证书
  3. 配置HTTPS→ 修改Nginx配置
  4. 配置微信合法域名→ 在小程序后台添加

HTTPS是微信小程序的基本要求,也是用户信任的基础。

下一篇,我们来聊聊日志系统设计——没有日志,出了问题只能靠猜。

评论区聊聊:你的HTTPS配置遇到过什么坑?

http://www.jsqmd.com/news/1127320/

相关文章:

  • 用 Claude Code 一小时重构老项目 CLI 代码实战
  • ANSYS Workbench 12.1中文实操包:从建模、网格到热分析与接触设置的全套学练资源
  • CAPM与Alpha策略实战:Python量化回测中分离Beta风险获取超额收益
  • 跟踪资金流向:使用 ES|QL 和跨集群搜索追踪洗钱网络
  • Java用POI往Word里加文字和图:带全部依赖的即跑示例
  • G-Helper终极指南:如何用轻量级控制工具彻底释放华硕笔记本性能
  • Matlab一键运行TV-Retinex图像增强工具包:含SplitBregman求解器与实操视频
  • NoFuserEx命令行反混淆工具:专为还原NoFuser加壳的.NET程序设计,含dnlib依赖与调试支持文件
  • 微信积分商城小程序源码包,含全套页面逻辑、配置文件与可直接使用的图标资源
  • 空洞骑士模组管理革命:Scarab如何用3分钟改变你的游戏体验?
  • AI大模型系统化学习路线与实践指南
  • 微信天气小程序源码:15天预报+城市搜索+自动切换天气背景图
  • 一站式密码学工具箱ToolsFx:编码、哈希、加密与数字签名实战指南
  • 终极Android VNC客户端指南:AVNC让你轻松远程控制电脑
  • PyTorch 2.0 实战:L1/L2正则化对比,MNIST分类准确率提升 3%
  • Mask R-CNN 实例分割实战:Python + OpenCV 可视化 3 种 Mask 生成流程
  • 跨架构物联网漏洞挖掘:统一IR与动静结合分析实践
  • 本地AI完全指南①:我把ChatGPT退了,一年省2400——为什么越来越多人把大模型搬回家
  • C#版YOLOv8+TensorRT实时检测与ByteTrack多目标追踪工程包(Win10/.NET 4.7.2/VS2019)
  • 热红外视觉下的车辆/船舶重识别新方法:Vc-fes
  • 5分钟上手OpenDesign Templates:vitepress-ts-demo模板使用指南
  • 5G-NR LDPC编译码MATLAB实操包:0.5码率+OMS偏置译码+全程录像指导
  • 前端开发资源合集:47k Star 的学习导航站
  • openeuler/riscv-kernel性能优化指南:提升RISC-V内核性能的实用技巧
  • 告别臃肿:华硕笔记本轻量级控制工具G-Helper完全指南
  • Matlab版苹果变橙子/橙子变苹果图像风格转换完整工程包(含数据集、训练图与动态演示)
  • NVIDIA Profile Inspector完整指南:解锁显卡隐藏设置的终极工具
  • Coze Skills模块化开发:低代码AI应用构建指南
  • LearnOpenCV:2.3 万 Star 的计算机视觉实战代码库
  • MATLAB版随机森林回归全流程工具:训练、调参、预测、评估一键运行