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

camsedfj  于 2022-10-19  发布在  Nginx
关注(0)|答案(1)|浏览(561)

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

所有请求获取到的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的方法

vvppvyoh

vvppvyoh1#

这种不改源码的情况下,看样子是只能自己临时实现一个GatewayFilter了。我这打算提交一个可配置RequestItemParser的PR,这样就只需要自己配置一下获取remoteAddress逻辑即可

相关问题