alibaba/Sentinel

Nginx代理后如何针对请求的Client IP进行限流

Open

#2,456 创建于 2021年11月22日

在 GitHub 查看
 (1 评论) (0 反应) (0 负责人)Java (8,150 fork)batch import
area/gateway-flow-controlgood first issuekind/enhancement

仓库指标

Star
 (23,109 star)
PR 合并指标
 (30 天内没有已合并 PR)

描述

因为使用了Nginx,针对请求的Client IP进行限流时有问题

image

所有请求获取到的ip地址都为同一个地址172.*.*.*,(应用部署在docker容器内)。

看了下com.alibaba.csp.sentinel.adapter.gateway.sc.ServerWebExchangeItemParser#getRemoteAddress的方法,获取ip时使用的代码是

public String getRemoteAddress(ServerWebExchange exchange) {
        InetSocketAddress remoteAddress = exchange.getRequest().getRemoteAddress();
        return remoteAddress == null ? null : remoteAddress.getAddress().getHostAddress();
    }

是否可以自定义获取请求ip地址?或者可以让sentinel得到代理后真实请求ip的方法

贡献者指南