📎 配套脚本附件正文未内嵌 · 共 9 个 · 点开可在线查看
📚 另需公共库(正文未重复内嵌,点名字直接看):_bootstrap.py
📂 查看全部 761 个脚本附件 →
⚠️ 脚本内含明文凭据(与本页正文一致),请勿在公网环境直接运行。
集成环境 · Higress

Higress 之六 · 企业级能力展示

HTTPS、限流、WAF、SSE、缓存、LB、协议转换、提示词安全等。

Higress 之六 · 企业级能力展示(证书 / 限流 / WAF / SSE / 缓存 / LB / 协议 / 提示词安全)

环境:192.168.110.207 · Higress Console 2.2.4(standalone)

系列:之一~五 → 之六(能力大展示)

HTML:docs/html_cursor/Higress_之六_企业级能力展示_cursor.html

定位:中大企业 AI 网关常见能力对照本环境 可 Console 操作 / 需插件 YAML / 需外部依赖 三类说明;并附可落库脚本。


0. 内部凭据一览

用途完整值
Higress Consolehttp://192.168.110.207:8001;用户 admin;密码 Higress207admin!
Gateway HTTPhttp://192.168.110.207:18080
Gateway HTTPShttps://192.168.110.207:18443(需证书+域名开启 HTTPS)
LiteLLM Bearersk-litellm-bocheng-207
经 Higress 调模型http://192.168.110.207:18080/llm/v1;Bearer sk-litellm-bocheng-207
Xinference Bearerxf-K8H3LiS27H4188XdOyWJj74MWMOlIR9tZbiybDbxbSas7eAI
经 Higress 调向量http://192.168.110.207:18080/xf/v1;Bearer xf-K8H3LiS27H4188XdOyWJj74MWMOlIR9tZbiybDbxbSas7eAI
Dify38205036@qq.com / Difyai123456

插件挂载 API(登录后 Cookie):

text
PUT /v1/routes/{routeName}/plugin-instances/{pluginName}
GET /v1/routes/{routeName}/plugin-instances
GET /v1/wasm-plugins          # 本环境约 52 个内置插件
GET /v1/wasm-plugins/{name}/config

1. 能力地图(企业主流场景 → Higress 落点)

企业诉求Higress 能力点本环境插件/菜单依赖推荐入口
HTTPS 对外域名 + TLS 证书域名管理、证书管理自签或正式证书Console
IP 黑白名单IP 访问控制ip-restriction无Console / 脚本
按 Key/用户限流本地 Key 限流key-rate-limit无Console / 脚本
集群级限流Redis 集群限流cluster-key-rate-limitRedisConsole
Token 级限流AI Token 限流ai-token-ratelimitRedisConsole
WAFModSecurity/CRSwaf无(规则严,API 慎开)Console / 脚本
Bot 防护Bot 识别bot-detect无Console
提示词注入/越狱拦截本地正文拦截request-block无Console / 脚本
云安全审核(内容合规)AI 安全护栏ai-security-guard阿里云 AK/内容安全Console
敏感信息脱敏AI 脱敏ai-data-masking视配置Console
请求/响应缓存HTTP 缓存response-cacheRedisConsole
AI 语义缓存AI Cacheai-cacheRedis/向量库等Console
SSE / 流式长连接路由超时 + 流式透传路由 Timeout / Gateway无Console + 上游
模型负载均衡多上游 / AI LBLiteLLM 同名多部署 或 ai-load-balancer视方案LiteLLM 优先 / Console
协议转换Header/Body/REST↔其它transformer、de-graphql、json-converter、ai-proxy无Console
API 鉴权Key/JWT/OIDC/HMACkey-auth、jwt-auth、oidc、hmac-auth、ext-auth视方案Console
灰度 / 流量染色前端灰、流量标frontend-gray、traffic-tag无Console
可观测内置 Prometheus/Grafanastandalone 已带无:15020 等
配额AI Quotaai-quota视配置Console
审计日志请求响应落日志log-request-response无Console

分层建议(中大企业常见):

  1. 边缘网关 Higress:TLS、WAF、IP、鉴权、限流、缓存、审计。
  2. 模型网关 LiteLLM:model 路由、多机 LB、上游 Key。
  3. 不要在 Higress 再配一遍「模型名路由」除非有专用前缀(见之五场景 F)。

2. Console 通用操作(所有插件共用)

2.1 UI 路径

  1. 浏览器打开 http://192.168.110.207:8001,登录 admin / Higress207admin!。
  2. 插件市场 / WASM 插件 → 选中插件 → 策略配置。
  3. 作用域选 路由 llm(或 xf / 全局)。
  4. 填写 YAML 或表单 → 保存 → 启用。
  5. 用 curl 验收;出问题先 禁用 该插件实例。

2.2 API 路径(自动化)

bash
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
bash /opt/workbuddy/scripts_bash_cursor/Higress部署/Higress_06_能力插件示例.sh
# 确认无误后再:
ENABLE=1 bash /opt/workbuddy/scripts_bash_cursor/Higress部署/Higress_06_能力插件示例.sh

3. HTTPS 证书

3.1 现状

3.2 Console 操作

  1. 证书管理 → 上传正式证书(PEM)或继续用 default 自签。
  2. 域名管理 → 目标域名 → enableHttps 设为 on → 选择 certIdentifier。
  3. 客户端访问:https://192.168.110.207:18443/...(自签需 -k)。

3.3 实验室自签示例(程序)

bash
# 在 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 绑定该证书并开启 HTTPS

3.4 验收

bash
curl -sk https://127.0.0.1:18443/llm/v1/models \
  -H "Authorization: Bearer sk-litellm-bocheng-207" | head -c 200

4. IP 限流 / IP 黑白名单

插件: ip-restriction 企业场景: 仅办公网 / VPC 访问模型 API;封禁扫描源。

4.1 推荐 YAML(白名单)

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,应设:

yaml
ip_source_type: header
ip_header_name: x-forwarded-for

4.2 验收

bash
# 启用插件后,从非白名单 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 实验室 / 中小流量。

yaml
limit_by_header:
  - key: x-higress-limit
    query_per_minute: 60

验收(启用后):

bash
# 同一 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
echo

5.2 集群限流 / Token 限流(要 Redis)

插件用途
cluster-key-rate-limit多副本 Gateway 共享计数
ai-token-ratelimit按 token 预算限流(大模型账单控制)

企业生产多 Gateway 时优先 Redis 方案;本 standalone 单 Gateway 用 key-rate-limit 即可演示。


6. WAF 安全

插件: waf(OWASP CRS)

yaml
useCRS: true

注意:


7. SSE / 流式长连接保活

大模型 stream: true(SSE)对网关要求:

  1. 不要在网关缓冲整包响应。
  2. 空闲超时要大于模型首 token / 思考时间(Qwen 可数十秒)。
  3. 上游 LiteLLM / vLLM 已设较长 timeout(本环境 LiteLLM 约 300s)。

7.1 Higress 侧

7.2 验收示例

bash
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 层备选

企业建议: 推理 LB 放 LiteLLM/推理集群;Higress 做入口与限流,避免两层 LB 策略打架。


10. 协议转换

插件场景
transformer改 Header/Query/Body,兼容旧客户端
ai-proxy统一 OpenAI 兼容出口转多家上游(与 LiteLLM 职责部分重叠,二选一主路径)
de-graphqlREST → GraphQL
json-converterJSON-RPC 相关转换
nginx-rewrite-compatible迁移 Nginx rewrite 规则

本环境主路径已是 Higress → LiteLLM(OpenAI 兼容),协议转换用于「存量奇形客户端」接入时再开。


11. 提示词安全拦截

11.1 本地关键词 / 特征(无外部依赖)——request-block

适合演示与内网第一道闸:

yaml
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 / OIDCjwt-auth / oidc / simple-jwt-auth对接企业 IdP
外部鉴权ext-auth对接自建鉴权服务
OPA 策略opa复杂策略即代码
CORScors浏览器跨域调 API
自定义错误页gw-error-format / custom-response统一错误体
地理 IPgeo-ip按地区策略
请求校验request-validationSchema 校验
流量染色traffic-tag灰度、压测流量标记
前端灰度frontend-gray静态资源灰度
AI 统计ai-statisticsToken 用量统计
AI 配额ai-quota按额度熔断
上下文超限拒绝ai-context-limit防超大 Prompt
Prompt 模板/装饰ai-prompt-template / ai-prompt-decorator统一系统提示
模型名映射/路由model-mapper / model-router与 LiteLLM 类似能力,慎重复
MCPmcp-server / mcp-routerAgent 工具生态
请求审计log-request-response安全审计

完整列表以 Console GET /v1/wasm-plugins 为准(当前约 52 个)。


13. 推荐落地顺序(企业试点)

  1. TLS + Key/JWT 鉴权 + IP 白名单(对外暴露前)
  2. key-rate-limit / ai-token-ratelimit(控成本、防刷)
  3. request-block / ai-security-guard(提示词与内容安全)
  4. SSE 超时调优(保障流式体验)
  5. ai-cache(高重复问答降本)
  6. WAF(非 LLM 业务路由优先;LLM 路由谨慎)
  7. 审计日志 + 观测大盘(对接现有 Prometheus/Grafana)

14. 与 LiteLLM 职责再强调(防配重)

需求优先组件
新模型名、多 GPU LBLiteLLM
对外 HTTPS、IP、WAF、网关限流、Prompt 拦截Higress
流式对话两边超时都要够;网关透传 SSE
OpenAI 兼容聚合已用 LiteLLM 则不必再上 ai-proxy 当主路径

详见之五。


15. 系列导航

  1. 之一 · 理论与架构
  2. 之二 · 安装与 Console
  3. 之三 · 路由验收
  4. 之四 · 增强附录
  5. 之五 · 新增接口场景
  6. 本文 · 企业级能力展示

附录 A:本环境 WASM 插件名清单(2026-08-26 拉取)

text
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

刷新命令:

bash
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

bash
#!/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 流式验收片段(完整可复制)

bash
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

bash
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