服务端安全加固:多维限流(按 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:
@@ -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/:id(base-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;
|
||||
|
||||
Reference in New Issue
Block a user