chore: release server-v1.0.62
Deploy Server / release-deploy-server (push) Successful in 51s

服务端安全加固:多维限流(按 IP/按门店)+ 敏感接口独立速率上限抵御 DDoS/刷接口;
登录暴力破解新增按来源 IP 锁定;反代后正确识别真实客户端 IP;
门店 custom_fields 轻量配置(录入默认值)透传保存。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y2Wdwo7SmgBJU37cBrkhPK
This commit is contained in:
wangjia
2026-06-19 20:20:44 +08:00
parent 0d967e899a
commit 7bbc944ae2
14 changed files with 628 additions and 57 deletions
+18
View File
@@ -1,3 +1,9 @@
# 粗粒度限流区(按客户端 IP):仅作未鉴权公开接口的最外层泄洪,阈值远高于正常使用,
# 真正的多维限流在后端 Go 中间件。本文件以 conf.d 形式 include 进 http{} 上下文,
# 故 limit_req_zone 放在 server{} 之外。10m 约可容纳 16 万个 IP 的状态。
limit_req_zone $binary_remote_addr zone=jiu_pub:10m rate=10r/s;
limit_req_status 429;
server {
listen 127.0.0.1:8445 ssl;
server_name jiu.51yanmei.com;
@@ -24,6 +30,16 @@ server {
proxy_read_timeout 300s;
}
# 未鉴权公开/登录接口:加最外层 per-IP 限流(鉴权后的业务 API 不在此限,交后端按店限流)。
# 须定义在通用 /api 正则之前(nginx 正则 location 按书写顺序首个命中者生效)。
location ~ ^/api/v1/(public|auth)/ {
limit_req zone=jiu_pub burst=20 nodelay;
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_read_timeout 30s;
}
# API 反向代理
location ~ ^/(api|health|version) {
proxy_pass http://127.0.0.1:8080;
@@ -49,6 +65,7 @@ server {
# 公开商品详情页(扫码跳转)→ 后端注入 OG 标签后返回 Flutter index.html
location ~ ^/product/ {
limit_req zone=jiu_pub burst=20 nodelay;
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
@@ -58,6 +75,7 @@ server {
# Flutter 路由会把 /product/:id 重写为 /app/product/:idbase-href=/app/
# 分享此 URL 时微信爬虫也需要 OG 标签 → 去掉 /app 前缀后转发后端
location ~ ^/app/product/ {
limit_req zone=jiu_pub burst=20 nodelay;
rewrite ^/app(/product/.+)$ $1 break;
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;