Higress 之六 · 企业级能力展示(证书 / 限流 / WAF / SSE / 缓存 / LB / 协议 / 提示词安全)
环境:
192.168.110.207· Higress Console2.2.4(standalone)系列:之一~五 → 之六(能力大展示)
HTML:
docs/html_cursor/Higress_之六_企业级能力展示_cursor.html定位:中大企业 AI 网关常见能力对照本环境 可 Console 操作 / 需插件 YAML / 需外部依赖 三类说明;并附可落库脚本。
0. 内部凭据一览
| 用途 | 完整值 |
|---|---|
| Higress Console | http://192.168.110.207:8001;用户 admin;密码 Higress207admin! |
| Gateway HTTP | http://192.168.110.207:18080 |
| Gateway HTTPS | https://192.168.110.207:18443(需证书+域名开启 HTTPS) |
| LiteLLM Bearer | sk-litellm-bocheng-207 |
| 经 Higress 调模型 | http://192.168.110.207:18080/llm/v1;Bearer sk-litellm-bocheng-207 |
| Xinference Bearer | xf-K8H3LiS27H4188XdOyWJj74MWMOlIR9tZbiybDbxbSas7eAI |
| 经 Higress 调向量 | http://192.168.110.207:18080/xf/v1;Bearer xf-K8H3LiS27H4188XdOyWJj74MWMOlIR9tZbiybDbxbSas7eAI |
| Dify | 38205036@qq.com / Difyai123456 |
插件挂载 API(登录后 Cookie):
PUT /v1/routes/{routeName}/plugin-instances/{pluginName}
GET /v1/routes/{routeName}/plugin-instances
GET /v1/wasm-plugins # 本环境约 52 个内置插件
GET /v1/wasm-plugins/{name}/config1. 能力地图(企业主流场景 → Higress 落点)
| 企业诉求 | Higress 能力点 | 本环境插件/菜单 | 依赖 | 推荐入口 |
|---|---|---|---|---|
| HTTPS 对外 | 域名 + TLS 证书 | 域名管理、证书管理 | 自签或正式证书 | Console |
| IP 黑白名单 | IP 访问控制 | ip-restriction | 无 | Console / 脚本 |
| 按 Key/用户限流 | 本地 Key 限流 | key-rate-limit | 无 | Console / 脚本 |
| 集群级限流 | Redis 集群限流 | cluster-key-rate-limit | Redis | Console |
| Token 级限流 | AI Token 限流 | ai-token-ratelimit | Redis | Console |
| WAF | ModSecurity/CRS | waf | 无(规则严,API 慎开) | Console / 脚本 |
| Bot 防护 | Bot 识别 | bot-detect | 无 | Console |
| 提示词注入/越狱拦截 | 本地正文拦截 | request-block | 无 | Console / 脚本 |
| 云安全审核(内容合规) | AI 安全护栏 | ai-security-guard | 阿里云 AK/内容安全 | Console |
| 敏感信息脱敏 | AI 脱敏 | ai-data-masking | 视配置 | Console |
| 请求/响应缓存 | HTTP 缓存 | response-cache | Redis | Console |
| AI 语义缓存 | AI Cache | ai-cache | Redis/向量库等 | Console |
| SSE / 流式长连接 | 路由超时 + 流式透传 | 路由 Timeout / Gateway | 无 | Console + 上游 |
| 模型负载均衡 | 多上游 / AI LB | LiteLLM 同名多部署 或 ai-load-balancer | 视方案 | LiteLLM 优先 / Console |
| 协议转换 | Header/Body/REST↔其它 | transformer、de-graphql、json-converter、ai-proxy | 无 | Console |
| API 鉴权 | Key/JWT/OIDC/HMAC | key-auth、jwt-auth、oidc、hmac-auth、ext-auth | 视方案 | Console |
| 灰度 / 流量染色 | 前端灰、流量标 | frontend-gray、traffic-tag | 无 | Console |
| 可观测 | 内置 Prometheus/Grafana | standalone 已带 | 无 | :15020 等 |
| 配额 | AI Quota | ai-quota | 视配置 | Console |
| 审计日志 | 请求响应落日志 | log-request-response | 无 | Console |
分层建议(中大企业常见):
- 边缘网关 Higress:TLS、WAF、IP、鉴权、限流、缓存、审计。
- 模型网关 LiteLLM:
model路由、多机 LB、上游 Key。 - 不要在 Higress 再配一遍「模型名路由」除非有专用前缀(见之五场景 F)。
2. Console 通用操作(所有插件共用)
2.1 UI 路径
- 浏览器打开
http://192.168.110.207:8001,登录admin/Higress207admin!。 - 插件市场 / WASM 插件 → 选中插件 → 策略配置。
- 作用域选 路由
llm(或xf/ 全局)。 - 填写 YAML 或表单 → 保存 → 启用。
- 用 curl 验收;出问题先 禁用 该插件实例。
2.2 API 路径(自动化)
COOKIE=/tmp/hc.ck
curl -sS -c $COOKIE -b $COOKIE -X POST http://127.0.0.1:8001/session/login \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"Higress207admin!"}'
# 列出某路由已挂插件
curl -sS -b $COOKIE http://127.0.0.1:8001/v1/routes/llm/plugin-instances | python3 -m json.tool
# 创建/更新(PUT;POST collection 会 405)
curl -sS -b $COOKIE -X PUT http://127.0.0.1:8001/v1/routes/llm/plugin-instances/key-rate-limit \
-H "Content-Type: application/json" \
-d '{"pluginName":"key-rate-limit","enabled":false,"rawConfigurations":"limit_by_header:\n - key: x-higress-limit\n query_per_minute: 60\n"}'一键写入演示配置(默认不启用):
bash /opt/workbuddy/scripts_bash_cursor/Higress部署/Higress_06_能力插件示例.sh
# 确认无误后再:
ENABLE=1 bash /opt/workbuddy/scripts_bash_cursor/Higress部署/Higress_06_能力插件示例.sh3. HTTPS 证书
3.1 现状
- Gateway 已映射 18443→443。
- Console 已有自签证书名
default(绑定higress-gateway,约一年有效)。 - 域名
higress-default-domain已enableHttps=on+certIdentifier=default。 dify.ai.local当前enableHttps=off。
3.2 Console 操作
- 证书管理 → 上传正式证书(PEM)或继续用 default 自签。
- 域名管理 → 目标域名 →
enableHttps设为on→ 选择certIdentifier。 - 客户端访问:
https://192.168.110.207:18443/...(自签需-k)。
3.3 实验室自签示例(程序)
# 在 207 生成测试证书(勿用于生产)
mkdir -p /opt/higress/certs && cd /opt/higress/certs
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout ai.local.key -out ai.local.crt \
-subj "/CN=ai.local/O=BoCheng/C=CN"
# 然后在 Console「证书管理」粘贴 crt+key,域名 ai.local 绑定该证书并开启 HTTPS3.4 验收
curl -sk https://127.0.0.1:18443/llm/v1/models \
-H "Authorization: Bearer sk-litellm-bocheng-207" | head -c 2004. IP 限流 / IP 黑白名单
插件: ip-restriction 企业场景: 仅办公网 / VPC 访问模型 API;封禁扫描源。
4.1 推荐 YAML(白名单)
ip_source_type: origin-source # 或 header + x-forwarded-for(经多层代理时)
allow:
- 192.168.0.0/16
- 192.168.110.207
- 127.0.0.1
status: 403
message: IP not allowed by Higress demo policy若前面还有 LB,应设:
ip_source_type: header
ip_header_name: x-forwarded-for4.2 验收
# 启用插件后,从非白名单 IP 访问应 403
curl -sS -o /dev/null -w "%{http_code}\n" \
http://192.168.110.207:18080/llm/v1/models \
-H "Authorization: Bearer sk-litellm-bocheng-207"5. 请求限流(QPS / 按 Key)
5.1 本地 Key 限流(无 Redis)——key-rate-limit
适合单机 standalone 实验室 / 中小流量。
limit_by_header:
- key: x-higress-limit
query_per_minute: 60验收(启用后):
# 同一 key 打爆 60/min 后应出现 429
for i in $(seq 1 80); do
curl -sS -o /dev/null -w "%{http_code} " \
http://127.0.0.1:18080/llm/v1/models \
-H "Authorization: Bearer sk-litellm-bocheng-207" \
-H "x-higress-limit: demo-user"
done
echo5.2 集群限流 / Token 限流(要 Redis)
| 插件 | 用途 |
|---|---|
cluster-key-rate-limit | 多副本 Gateway 共享计数 |
ai-token-ratelimit | 按 token 预算限流(大模型账单控制) |
企业生产多 Gateway 时优先 Redis 方案;本 standalone 单 Gateway 用 key-rate-limit 即可演示。
6. WAF 安全
插件: waf(OWASP CRS)
useCRS: true注意:
- CRS 对 JSON API / 长 Prompt 可能误杀(SQL/XSS 规则扫 body)。
- 建议:先
enabled=false观察;或仅挂在 非 LLM 的业务路由;LLM 路由优先用「提示词拦截」+「鉴权」而非全量 CRS。 - 本环境脚本默认写入但 不启用 waf。
7. SSE / 流式长连接保活
大模型 stream: true(SSE)对网关要求:
- 不要在网关缓冲整包响应。
- 空闲超时要大于模型首 token / 思考时间(Qwen 可数十秒)。
- 上游 LiteLLM / vLLM 已设较长
timeout(本环境 LiteLLM 约 300s)。
7.1 Higress 侧
- 路由编辑 → 超时(Timeout):建议连接/空闲/总时长按企业 SLA 设大(例如 300s+)。
- Console 若字段名随版本变化,以「路由详情 → 超时」为准。
- 避免在流式路径挂 response-cache(会破坏流)。
7.2 验收示例
curl -sS -N http://192.168.110.207:18080/llm/v1/chat/completions \
-H "Authorization: Bearer sk-litellm-bocheng-207" \
-H "Content-Type: application/json" \
-d '{
"model":"qwen3.6-27b",
"stream":true,
"messages":[{"role":"user","content":"用三句话介绍网关"}],
"max_tokens":128
}'
# 期望持续刷 data: 行,中间不断开若中途断流:加大路由超时 → 查 LiteLLM/vLLM 日志 → 查中间是否还有另一层代理。
8. 请求缓存
| 方案 | 插件 | 适用 |
|---|---|---|
| HTTP 响应缓存 | response-cache | 幂等 GET/可缓存 POST(需 Redis) |
| AI 语义缓存 | ai-cache | 相同/相似 Prompt 命中,省 token |
LLM 注意: 流式、强实时、含用户隐私的请求慎开缓存;命中键需含模型名、温度等。
企业常见:问答 FAQ 类高重复流量开 ai-cache;管理 API 开短 TTL response-cache。
9. 负载均衡
9.1 推荐:LiteLLM 层(已落地)
同名 model_name 多条 + router_settings.routing_strategy(见 LiteLLM 文档 / demo-lb)。 Higress 只转到 :4000,不感知后面几台 GPU。
9.2 Higress 层备选
- static 服务源
domain: "ip1:port,ip2:port"多地址。 - 或插件
ai-load-balancer(面向 LLM 的热切换策略)。
企业建议: 推理 LB 放 LiteLLM/推理集群;Higress 做入口与限流,避免两层 LB 策略打架。
10. 协议转换
| 插件 | 场景 |
|---|---|
transformer | 改 Header/Query/Body,兼容旧客户端 |
ai-proxy | 统一 OpenAI 兼容出口转多家上游(与 LiteLLM 职责部分重叠,二选一主路径) |
de-graphql | REST → GraphQL |
json-converter | JSON-RPC 相关转换 |
nginx-rewrite-compatible | 迁移 Nginx rewrite 规则 |
本环境主路径已是 Higress → LiteLLM(OpenAI 兼容),协议转换用于「存量奇形客户端」接入时再开。
11. 提示词安全拦截
11.1 本地关键词 / 特征(无外部依赖)——request-block
适合演示与内网第一道闸:
blocked_code: 403
blocked_message: blocked by higress request-block demo
case_sensitive: false
block_bodies:
- 忽略以上指令
- ignore previous instructions
- 越狱还可配 block_urls、block_headers 等(见插件 schema)。
11.2 云内容安全——ai-security-guard
需阿里云 accessKey / secretKey 与内容安全服务;适合正式合规审计。 无云账号时用 11.1 + 业务侧审核即可。
11.3 脱敏——ai-data-masking
身份证、手机号等进模型前脱敏,出站再还原(按插件文档配置)。
12. 其它中大企业主流能力(本环境已具备插件)
| 能力 | 插件 | 一句话 |
|---|---|---|
| API Key 鉴权 | key-auth | 网关层再验一把 Key(可与 LiteLLM Key 分层) |
| JWT / OIDC | jwt-auth / oidc / simple-jwt-auth | 对接企业 IdP |
| 外部鉴权 | ext-auth | 对接自建鉴权服务 |
| OPA 策略 | opa | 复杂策略即代码 |
| CORS | cors | 浏览器跨域调 API |
| 自定义错误页 | gw-error-format / custom-response | 统一错误体 |
| 地理 IP | geo-ip | 按地区策略 |
| 请求校验 | request-validation | Schema 校验 |
| 流量染色 | traffic-tag | 灰度、压测流量标记 |
| 前端灰度 | frontend-gray | 静态资源灰度 |
| AI 统计 | ai-statistics | Token 用量统计 |
| AI 配额 | ai-quota | 按额度熔断 |
| 上下文超限拒绝 | ai-context-limit | 防超大 Prompt |
| Prompt 模板/装饰 | ai-prompt-template / ai-prompt-decorator | 统一系统提示 |
| 模型名映射/路由 | model-mapper / model-router | 与 LiteLLM 类似能力,慎重复 |
| MCP | mcp-server / mcp-router | Agent 工具生态 |
| 请求审计 | log-request-response | 安全审计 |
完整列表以 Console GET /v1/wasm-plugins 为准(当前约 52 个)。
13. 推荐落地顺序(企业试点)
- TLS + Key/JWT 鉴权 + IP 白名单(对外暴露前)
- key-rate-limit / ai-token-ratelimit(控成本、防刷)
- request-block / ai-security-guard(提示词与内容安全)
- SSE 超时调优(保障流式体验)
- ai-cache(高重复问答降本)
- WAF(非 LLM 业务路由优先;LLM 路由谨慎)
- 审计日志 + 观测大盘(对接现有 Prometheus/Grafana)
14. 与 LiteLLM 职责再强调(防配重)
| 需求 | 优先组件 |
|---|---|
| 新模型名、多 GPU LB | LiteLLM |
| 对外 HTTPS、IP、WAF、网关限流、Prompt 拦截 | Higress |
| 流式对话 | 两边超时都要够;网关透传 SSE |
| OpenAI 兼容聚合 | 已用 LiteLLM 则不必再上 ai-proxy 当主路径 |
详见之五。
15. 系列导航
- 之一 · 理论与架构
- 之二 · 安装与 Console
- 之三 · 路由验收
- 之四 · 增强附录
- 之五 · 新增接口场景
- 本文 · 企业级能力展示
附录 A:本环境 WASM 插件名清单(2026-08-26 拉取)
ai-agent, ai-cache, ai-context-limit, ai-data-masking, ai-history, ai-intent,
ai-json-resp, ai-load-balancer, ai-prompt-decorator, ai-prompt-template, ai-proxy,
ai-quota, ai-rag, ai-search, ai-security-guard, ai-statistics, ai-token-ratelimit,
ai-transformer, basic-auth, bot-detect, cache-control, cluster-key-rate-limit, cors,
custom-response, de-graphql, ext-auth, frontend-gray, geo-ip, gw-error-format,
hmac-auth, hmac-auth-apisix, ip-restriction, json-converter, jwt-auth, key-auth,
key-rate-limit, log-request-response, mcp-router, mcp-server, model-mapper,
model-router, nginx-rewrite-compatible, oauth, oidc, opa, request-block,
request-validation, response-cache, simple-jwt-auth, traffic-tag, transformer, waf刷新命令:
curl -sS -b /tmp/hc.ck http://127.0.0.1:8001/v1/wasm-plugins \
| python3 -c "import sys,json; d=json.load(sys.stdin); print('\n'.join(sorted(x['name'] for x in d['data'])))"附录 B:Higress_06_能力插件示例.sh(完整)
仓库路径:scripts_bash_cursor/Higress部署/Higress_06_能力插件示例.sh
#!/usr/bin/env bash
# Higress 之六 · 在路由 llm 上挂载演示插件(默认 enabled=false)
# bash Higress_06_能力插件示例.sh
# ENABLE=1 bash Higress_06_能力插件示例.sh
set -euo pipefail
CONSOLE="${HIGRESS_CONSOLE:-http://127.0.0.1:8001}"
USER="${HIGRESS_ADMIN_USER:-admin}"
PASS="${HIGRESS_ADMIN_PASS:-Higress207admin!}"
ROUTE="${HIGRESS_DEMO_ROUTE:-llm}"
ENABLE="${ENABLE:-0}"
ENABLED_JSON=false
[ "$ENABLE" = "1" ] || [ "$ENABLE" = "true" ] && ENABLED_JSON=true
COOKIE="$(mktemp)"
trap 'rm -f "$COOKIE"' EXIT
curl -sS -c "$COOKIE" -b "$COOKIE" -X POST "$CONSOLE/session/login" \
-H "Content-Type: application/json" \
-d "{\"username\":\"$USER\",\"password\":\"$PASS\"}" | tee /tmp/h6_login.json
echo
grep -q '"name"' /tmp/h6_login.json || { echo "[FAIL] login"; exit 1; }
put_plugin() {
local name="$1"
local raw_file="$2"
local raw
raw="$(cat "$raw_file")"
local body
body="$(ENABLED_JSON="$ENABLED_JSON" NAME="$name" RAW="$raw" python3 - <<'PY'
import json, os
print(json.dumps({
"pluginName": os.environ["NAME"],
"enabled": os.environ["ENABLED_JSON"] == "true",
"rawConfigurations": os.environ["RAW"],
}, ensure_ascii=False))
PY
)"
echo "[INFO] PUT /v1/routes/$ROUTE/plugin-instances/$name enabled=$ENABLED_JSON"
curl -sS -b "$COOKIE" -X PUT "$CONSOLE/v1/routes/$ROUTE/plugin-instances/$name" \
-H "Content-Type: application/json" \
-d "$body"
echo
}
TMPD="$(mktemp -d)"
trap 'rm -rf "$TMPD" "$COOKIE"' EXIT
cat >"$TMPD/ip.yml" <<'EOF'
ip_source_type: origin-source
allow:
- 192.168.0.0/16
- 127.0.0.1
- 192.168.110.207
status: 403
message: IP not allowed by Higress demo policy
EOF
cat >"$TMPD/rate.yml" <<'EOF'
limit_by_header:
- key: x-higress-limit
query_per_minute: 60
EOF
cat >"$TMPD/block.yml" <<'EOF'
blocked_code: 403
blocked_message: blocked by higress request-block demo
case_sensitive: false
block_bodies:
- 忽略以上指令
- ignore previous instructions
- 越狱
EOF
cat >"$TMPD/waf.yml" <<'EOF'
useCRS: true
EOF
put_plugin "ip-restriction" "$TMPD/ip.yml"
put_plugin "key-rate-limit" "$TMPD/rate.yml"
put_plugin "request-block" "$TMPD/block.yml"
put_plugin "waf" "$TMPD/waf.yml"
echo "[INFO] 插件列表:"
curl -sS -b "$COOKIE" "$CONSOLE/v1/routes/$ROUTE/plugin-instances" | python3 -m json.tool | head -n 160
echo "[OK] ENABLE=$ENABLE (建议实验室先 false,确认 YAML 后再 ENABLE=1)"附录 C:SSE 流式验收片段(完整可复制)
curl -sS -N --max-time 120 \
http://192.168.110.207:18080/llm/v1/chat/completions \
-H "Authorization: Bearer sk-litellm-bocheng-207" \
-H "Content-Type: application/json" \
-d '{"model":"qwen3.6-27b","stream":true,"messages":[{"role":"user","content":"数到5"}],"max_tokens":64}'附录 D:证书列表示例 API
curl -sS -b /tmp/hc.ck http://127.0.0.1:8001/v1/tls-certificates | python3 -m json.tool
curl -sS -b /tmp/hc.ck http://127.0.0.1:8001/v1/domains | python3 -m json.tool