外观
自定义IP获取拦截器 🌐
功能介绍 💡
WARNING
此拦截器主要用于解决内部系统间调用时的IP传递问题。当系统A调用系统B时,可以自定义传入客户的外网IP,避免获取到的是内网IP地址。
应用场景
- ✓ 微服务间的IP传递
- ✓ 内外网IP映射
- ✓ 真实客户IP追踪
- ✓ 跨系统调用链路追踪
配置说明 ⚙️
基础配置参数
参数名 | 类型 | 必填 | 默认值 | 说明 |
---|---|---|---|---|
enabled | boolean | 否 | false | 是否启用拦截器 |
items | array | 是 | - | 拦截规则列表 |
拦截规则配置 (items)
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
urls | array | 是 | 需要拦截的接口地址列表 |
field-name | string | 是 | 请求头中的IP字段名称 |
TIP
URL匹配规则详见 URL匹配规则说明
配置示例 📝
基础配置
yaml
wueasy:
gateway:
filter:
custom-ip:
enabled: true
items:
- field-name: client-ip
urls:
- /sso/oauth/logout
- /sso/oauth/getAccountInfo
- /sso/oauth/getDictList
多规则配置
yaml
wueasy:
gateway:
filter:
custom-ip:
enabled: true
items:
- field-name: client-ip
urls:
- /sso/oauth/**
- field-name: x-real-ip
urls:
- /api/**
使用说明 📌
1. 发送请求方
http
GET /sso/oauth/getAccountInfo HTTP/1.1
Host: example.com
client-ip: 203.0.113.1
2. 接收方获取IP
java
String clientIp = request.getHeader("client-ip");
注意事项 ⚠️
- IP字段只能从请求头(Header)获取
- 确保field-name配置正确
- 注意URL匹配规则的准确性
- 考虑IP格式的合法性
最佳实践 💡
命名规范
- 使用统一的IP字段名
- 遵循命名约定
- 避免特殊字符
安全考虑
- 验证IP格式
- 防止IP伪造
- 记录IP来源
常见问题 ❓
无法获取自定义IP
- 检查field-name是否正确
- 确认请求头是否包含IP字段
- 验证URL匹配是否生效
IP格式异常
- 检查IP格式是否规范
- 确认IP传递过程是否正确
- 验证是否有中间件修改