為您的伺服器提供 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
常見問題