alibaba/Sentinel

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

Open

#2,456 opened on 2021年11月22日

GitHub で見る
 (1 comment) (0 reactions) (0 assignees)Java (8,150 forks)batch import
area/gateway-flow-controlgood first issuekind/enhancement

Repository metrics

Stars
 (23,109 stars)
PR merge metrics
 (30d に merged 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的方法

コントリビューターガイド