Skip to content

自定义IP获取拦截器 🌐

功能介绍 💡

WARNING

此拦截器主要用于解决内部系统间调用时的IP传递问题。当系统A调用系统B时,可以自定义传入客户的外网IP,避免获取到的是内网IP地址。

应用场景

  • ✓ 微服务间的IP传递
  • ✓ 内外网IP映射
  • ✓ 真实客户IP追踪
  • ✓ 跨系统调用链路追踪

配置说明 ⚙️

基础配置参数

参数名类型必填默认值说明
enabledbooleanfalse是否启用拦截器
itemsarray-拦截规则列表

拦截规则配置 (items)

参数名类型必填说明
urlsarray需要拦截的接口地址列表
field-namestring请求头中的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");

注意事项 ⚠️

  1. IP字段只能从请求头(Header)获取
  2. 确保field-name配置正确
  3. 注意URL匹配规则的准确性
  4. 考虑IP格式的合法性

最佳实践 💡

  1. 命名规范

    • 使用统一的IP字段名
    • 遵循命名约定
    • 避免特殊字符
  2. 安全考虑

    • 验证IP格式
    • 防止IP伪造
    • 记录IP来源

常见问题 ❓

无法获取自定义IP

  • 检查field-name是否正确
  • 确认请求头是否包含IP字段
  • 验证URL匹配是否生效

IP格式异常

  • 检查IP格式是否规范
  • 确认IP传递过程是否正确
  • 验证是否有中间件修改