为您的服务器提供 Forward Auth
服务器旁的一个容器检测每个请求中的机器人、Tor、VPN 和代理。默认以 Monitor 模式启动,在您切换之前不会拦截任何请求。
免费,MIT 许可证Docker,amd64 和 arm64
流量类别
每个类别都以 X-IPScanner-Class 传给您的应用。可在控制台中按站点允许、标记或拦截。
malicious_automation
ai_agent
tor
vpn
proxy
hosting
relay
verified_bot
human
安装
免费套餐即可开始。
IPSCANNER_API_KEY
pk_live_••••••••3f9a
与代理位于同一 Docker 网络。不要对外公开其端口。
services:
ipscanner:
image: ghcr.io/ipscanner/forward-auth:0.1
restart: unless-stopped
environment:
IPSCANNER_API_KEY: ${IPSCANNER_API_KEY}
SITE_ID: site_...SITE_ID之后控制台会保存站点策略并显示其流量。
SITE_ID
site_4fQ8nZ2kLm7xR1vT9cBw
在下方选择您的服务器。每个片段都经过端到端测试。
服务器配置
复制适合您环境的片段。Traefik 和 Caddy 也可以通过同一个容器接入。
放入 server 块。请先启动网关:nginx 在启动时解析 ipscanner。
网关停止:1 秒后放行
location / {
auth_request /_ipscanner;
auth_request_set $ipscanner_status $upstream_http_x_ipscanner_status;
auth_request_set $ipscanner_class $upstream_http_x_ipscanner_class;
auth_request_set $ipscanner_action $upstream_http_x_ipscanner_action;
auth_request_set $ipscanner_network $upstream_http_x_ipscanner_network_class;
auth_request_set $ipscanner_anonymized $upstream_http_x_ipscanner_anonymized;
auth_request_set $ipscanner_risk $upstream_http_x_ipscanner_risk;
auth_request_set $ipscanner_country $upstream_http_x_ipscanner_country;
auth_request_set $ipscanner_site $upstream_http_x_ipscanner_site;
auth_request_set $ipscanner_request_id $upstream_http_x_ipscanner_request_id;
error_page 403 = @ipscanner_blocked;
proxy_set_header X-IPScanner-Status $ipscanner_status;
proxy_set_header X-IPScanner-Class $ipscanner_class;
proxy_set_header X-IPScanner-Action $ipscanner_action;
proxy_set_header X-IPScanner-Network-Class $ipscanner_network;
proxy_set_header X-IPScanner-Anonymized $ipscanner_anonymized;
proxy_set_header X-IPScanner-Risk $ipscanner_risk;
proxy_set_header X-IPScanner-Country $ipscanner_country;
proxy_set_header X-IPScanner-Site $ipscanner_site;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://app:80;
}
location = /_ipscanner {
internal;
proxy_pass http://ipscanner:8080/check;
proxy_pass_request_body off;
proxy_set_header Content-Length "";
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Original-URI $request_uri;
proxy_set_header X-Original-Method $request_method;
proxy_connect_timeout 1s;
proxy_read_timeout 5s;
error_page 500 502 503 504 = @ipscanner_down;
}
location @ipscanner_down {
return 204;
}
location @ipscanner_blocked {
internal;
proxy_method GET;
proxy_pass_request_body off;
proxy_set_header Content-Length "";
proxy_set_header X-IPScanner-Request-Id $ipscanner_request_id;
rewrite ^ /blocked break;
proxy_pass http://ipscanner:8080;
}设置
在容器上设置。CACHE_TTL 和 POLICY_TTL 也接受 10m 这样的值。
| 变量 | 默认值 | 作用 |
|---|---|---|
IPSCANNER_API_KEY您的 API 密钥。未设置时所有请求直接放行默认值:空 | 空 | 您的 API 密钥。未设置时所有请求直接放行 |
IPSCANNER_API_KEY_FILE从文件读取密钥,适用于 Docker secrets默认值:空 | 空 | 从文件读取密钥,适用于 Docker secrets |
SITE_ID将网关关联到站点及其策略默认值:空 | 空 | 将网关关联到站点及其策略 |
MODEmonitor 或 enforce。设置 SITE_ID 后由控制台决定,monitor 除外默认值:monitor | monitor | monitor 或 enforce。设置 SITE_ID 后由控制台决定,monitor 除外 |
BLOCK_CLASSES未设置 SITE_ID 时,enforce 模式下拦截的类别默认值:malicious_automation | malicious_automation | 未设置 SITE_ID 时,enforce 模式下拦截的类别 |
TRUSTED_PROXIES信任其 X-Forwarded-For 的代理默认值:private | private | 信任其 X-Forwarded-For 的代理 |
IP_HEADERS按顺序读取访客 IP 的标头默认值:X-Forwarded-For | X-Forwarded-For | 按顺序读取访客 IP 的标头 |
TIMEOUT_MS每次检测的时限,超时后放行默认值:1500 | 1500 | 每次检测的时限,超时后放行 |
CACHE_TTL每位访客判定结果的缓存秒数默认值:600 | 600 | 每位访客判定结果的缓存秒数 |
CACHE_SIZE内存中保留的判定数量默认值:10000 | 10000 | 内存中保留的判定数量 |
POLICY_TTL站点策略的缓存秒数默认值:30 | 30 | 站点策略的缓存秒数 |
SKIP_PATHS跳过检测的路径正则默认值:静态资源 | 静态资源 | 跳过检测的路径正则 |
UPSTREAM_URL开启代理模式,并将放行的请求转发到此处默认值:空 | 空 | 开启代理模式,并将放行的请求转发到此处 |
LISTEN监听地址默认值::8080 | :8080 | 监听地址 |
HEALTH_PATH健康检查端点默认值:/healthz | /healthz | 健康检查端点 |
BLOCK_MESSAGE403 页面的文字默认值:Blocked by IPScanner edge guard. | Blocked by IPScanner edge guard. | 403 页面的文字 |
IPSCANNER_API_URLAPI 基础 URL默认值:https://ipscanner.io | https://ipscanner.io | API 基础 URL |
DEBUG每个决定记录一行日志默认值:false | false | 每个决定记录一行日志 |
容器
GET /healthz 始终返回 200,并显示网关当前的状态。
{
"status": "ok",
"version": "0.1.0",
"mode": "forward_auth",
"enabled": true,
"site": "site_4fQ8nZ2kLm7xR1vT9cBw",
"backoff": false,
"policyMode": "monitor",
"policyVersion": 3,
"cachedVerdicts": 128
}ghcr.io/ipscanner/forward-auth:0.1
常见问题