From 67aa9be3dae535a71d449009e951a9dfb8f3c223 Mon Sep 17 00:00:00 2001 From: RRRosmontis Date: Wed, 23 Sep 2026 15:05:14 +0800 Subject: [PATCH] =?UTF-8?q?feat(nginx):=20openapi=20=E5=85=A8=E7=AB=99?= =?UTF-8?q?=E5=90=AF=E7=94=A8=E6=8C=89=20IP=20=E9=99=90=E6=B5=81=EF=BC=88?= =?UTF-8?q?=E8=BD=BB=E9=98=B2=E6=BB=A5=E7=94=A8=E6=A1=A3=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 00-limits.conf 新增 limit_req_zone perip_req 10r/s + 429 状态码 (zone 定义属服务器配置, 不入库) - 站点 conf 443 server 块挂 limit_req burst=20 nodelay + limit_conn perip 10 - 域名直连无 CDN, binary_remote_addr 即真实 IP; 后端全绑 127.0.0.1 无死角 - 验证: 30 并发部分 429, 桶恢复后正常 --- docs/部署与运维.md | 5 ++++- nginx/openapi.rrrosmontis.icu.conf | 4 ++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/docs/部署与运维.md b/docs/部署与运维.md index 7f38dcf..81423d0 100644 --- a/docs/部署与运维.md +++ b/docs/部署与运维.md @@ -94,10 +94,13 @@ | 文件 | 作用 | |---|---| -| `/etc/nginx/conf.d/openapi.rrrosmontis.icu.conf` | 统一入口站点(`proxy_pass` → `127.0.0.1:9008`) | +| `/etc/nginx/conf.d/openapi.rrrosmontis.icu.conf` | 统一入口站点(`proxy_pass` → `127.0.0.1:9008`;含按 IP 限流,见下) | +| `/etc/nginx/conf.d/00-limits.conf` | 限流 zone 定义(`perip` 连接数 / `perip_req` 请求速率)+ 429 状态码 | | `/etc/nginx/conf.d/00-websocket.conf` | `$connection_upgrade` map 定义(**必须存在**) | | `/home/openapi/nginx/**` | 宝塔导出的历史存档,非生效路径 | +**按 IP 限流(2026-09-23 启用,轻防滥用档)**:域名 DNS 直连本机(无 CDN),`$binary_remote_addr` 即真实客户端 IP,后端全绑 `127.0.0.1` 使 nginx 成为唯一入口、限流无死角。参数:`limit_req_zone ... rate=10r/s` + `burst=20 nodelay`,`limit_conn perip 10`;超出返回 **429**。验证:30 并发请求中部分被拒(429),桶恢复后正常。调整档位改 `/etc/nginx/conf.d/00-limits.conf`(速率)与站点 conf(burst/并发)后 `nginx -t && systemctl reload nginx`。 + ## Python 环境 - `/home/openapi/env/general` —— 五服务共用(flask / waitress / aiohttp / httpx / yt-dlp / jmcomic / pillow) diff --git a/nginx/openapi.rrrosmontis.icu.conf b/nginx/openapi.rrrosmontis.icu.conf index 1b88781..d5a855e 100644 --- a/nginx/openapi.rrrosmontis.icu.conf +++ b/nginx/openapi.rrrosmontis.icu.conf @@ -31,6 +31,10 @@ server { add_header Strict-Transport-Security "max-age=31536000"; error_page 497 https://$host$request_uri; + # ---- 按 IP 限流(轻防滥用档,2026-09-23):10r/s burst 20、并发连接 10,超出 429 ---- + limit_req zone=perip_req burst=20 nodelay; + limit_conn perip 10; + resolver 8.8.8.8 1.1.1.1 ipv6=off valid=300s; # ---- 图片反代 i.pximg.net(原 apixiv.bu4.ren 逻辑,路径前缀 /img-master/)----