当前位置: 首页 > 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.gsyq.cn/news/1639294.html

相关文章:

  • G-Helper终极指南:如何用轻量级控制工具彻底释放华硕笔记本性能
  • Matlab一键运行TV-Retinex图像增强工具包:含SplitBregman求解器与实操视频
  • 微信天气小程序源码:15天预报+城市搜索+自动切换天气背景图
  • 跨架构物联网漏洞挖掘:统一IR与动静结合分析实践
  • PyTorch 2.0 实战:L1/L2正则化对比,MNIST分类准确率提升 3%
  • C#版YOLOv8+TensorRT实时检测与ByteTrack多目标追踪工程包(Win10/.NET 4.7.2/VS2019)
  • 5G-NR LDPC编译码MATLAB实操包:0.5码率+OMS偏置译码+全程录像指导
  • LearnOpenCV:2.3 万 Star 的计算机视觉实战代码库
  • NVIDIA Profile Inspector完整指南:解锁显卡隐藏设置的终极工具
  • 深入探索NVIDIA Profile Inspector:解锁显卡隐藏性能的秘密钥匙
  • 华硕笔记本性能控制终极指南:G-Helper轻量级工具完全教程
  • 2026-07-04 GitHub 热点项目精选
  • 从Prompt到自动化工作流:Loop Engineering构建AI编程新范式
  • 艾尔登法环mod下载法魂Modv3.0安装指南
  • 安卓蓝牙app技术-Claude
  • 空洞骑士模组管理器Scarab终极指南:如何轻松安装和管理MOD
  • MATLAB图形化图像水印工具:支持DCT/DWT嵌入提取与攻击测试
  • 工业预诊:06 品牌大乱斗:GE、西门子、国产
  • 如何用Scarab模组管理器轻松玩转空洞骑士MOD世界?
  • 商业数据分析实战:从五大核心系统到端到端项目全流程
  • 实战案例:如何用容度原理设计一篇“Nature级别”实验
  • GRPO训练燃料:把Hermes Agent Feedback变成强化学习信号
  • 龍魂系统入口一致性协议
  • openEuler/btfhub与原生BTFHub对比分析:为何openEuler需要自己的BTF解决方案
  • 云安全密钥管理实战:从RAM角色到KMS加密的合规架构
  • YOLO模型如何训练 -AI避障识别之红外目标检测数据集 红外小目标检测数据集 红外车辆行人识别数据集 Yolo格式数据集 第10217期
  • Ceph文件系统开发全攻略:openeuler/ceph_dev中CephFS架构解析
  • 2026图片背景换色工具汇总:手机,APP、网页、小程序、电脑软件实操指南
  • 前端工程化最佳实践:基于OpenDesign Templates的monorepo项目搭建
  • 综合实力最强的全球EMBA 2025权威榜单深度评测