alibaba/Sentinel

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

Open

#2 456 ouverte le 22 nov. 2021

Voir sur GitHub
 (1 commentaire) (0 réactions) (0 assignés)Java (8 150 forks)batch import
area/gateway-flow-controlgood first issuekind/enhancement

Métriques du dépôt

Stars
 (23 109 stars)
Métriques de merge PR
 (Aucune PR mergée en 30 j)

Description

因为使用了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的方法

Guide contributeur