技术路线
一.架构+服务
- 由于小程序访问量不大,本身对Python更熟悉,后端代码采用的是Python+flask,部署的时候调整为使用 Flask 作为 Web应用框架,用于构建 HTTP 服务,处理客户端的请求与响应。
- 借助 Waitress 作为 WSGI(Web Server Gateway Interface)服务器,负责部署和运行 Flask应用,使其能对外提供网络服务。
二.数据存储与缓存
1.数据库连接方面,使用 pyodbc 来连接数据库(通常用于连接 SQL Server 等数据库),同时结合 DBUtils.PooledDB 实现数据库连接池,提升数据库操作的性能和资源管理效率。
2. 缓存机制采用 Flask-Caching,可用于缓存频繁访问的数据,减轻数据库压力,提高响应速度。 还引入了 Redis,Redis常用于作为高性能的键值对存储数据库,可用于缓存、消息队列等场景,进一步优化数据访问性能。
三.安全与认证
- 身份认证和授权使用 JWT(JSON Web Token),通过 jwt 库来生成和验证 token,实现无状态的用户认证,便于在分布式系统中进行用户身份传递和验证。
- 加密相关,使用 bcrypt 进行密码哈希处理,增强用户密码的安全性;利用 PyCrypto(Crypto 相关模块) 进行 RSA 加密、签名等操作,保障数据传输和存储的安全性,比如 PKCS1_OAEP 用于 RSA 加密,pss 用于签名等。
四.网络部署
整体采用 “小程序客户端 → 域名(HTTPS)→ Nginx 反向代理 → Flask 后端服务” 架构。
小程序(微信客户端)
↓ HTTPS(443端口) 域名 (DNS解析至公网IP,通过路由器端口转发至Nginx服务器IP)
↓ 反向代理 Nginx服务器(处理SSL、静态资源、请求转发)
↓ TCP(5000端口) Flask后端服务(Python进程,运行在内网服务器)
↓ 数据交互 数据库(SQL Server,通过pyodbc+连接池访问)/ Redis(缓存)
1.域名解析
1.在域名服务商(如阿里云、腾讯云)后台,配置域名 的 A 记录,指向 Nginx 服务器的 公网 IPv4 地址。
2.若域名用于微信小程序,需完成工信部 ICP 备案(微信小程序要求后端域名必须备案),备案主体与小程序主体一致。
2.SSL证书配置
- 证书获取与续期
采用 Let’s Encrypt 免费证书(通过 Certbot 自动续期),证书文件存放路径: C:/certbot/live/域名/,包含 3 个核心文件: fullchain.pem:完整证书链(服务器证书 +中间证书,确保客户端信任); privkey.pem:服务器私钥(需保护,仅 Nginx 运行用户可读取);chain.pem:中间证书(配置ssl_trusted_certificate,增强兼容性)。
- 自动续期脚本(避免证书过期):
保留前期批处理脚本,关键修改 “仅重启 Nginx + 重载配置”,脚本路径 C:/app/ssl_renew.bat:
> `@echo off
echo [%date% %time%] 开始检查SSL证书续签 >> C:\app\ssl_renew.log
:: 证书续签(仅实际更新时执行钩子)
certbot renew --quiet --renew-hook "echo [%date% %time%] 证书更新,重载Nginx >> C:\app\ssl_renew.log && nginx.exe -s reload"
if %errorlevel% equ 0 (
echo [%date% %time%] 续签检查完成(无需续签/成功) >> C:\app\ssl_renew.log
) else (
echo [%date% %time%] 续签失败,错误码:%errorlevel% >> C:\app\ssl_renew.log
)
echo ------------------------------------------------------ >> C:\app\ssl_renew.log`
配置 Windows 任务计划(每周执行 1 次,管理员权限),确保证书自动续期。证书有效期不足1月时,会进行自动续签。
- Nginx SSL 配置
在 Nginx 的server块中配置 SSL,确保同时支持 IPv4/IPv6,关键配置如下:
server

最低0.47元/天 解锁文章
6646

被折叠的 条评论
为什么被折叠?



