2024年5月29日发(作者:)

API Gateway 中获取客户端 IP 的方法

1. 通过 HTTP 头部获取客户端 IP 地址

第一种方法是通过 HTTP 头部中的“X-Forwarded-For”头部来

获取客户端 IP 地址。这个头部包含了客户端的最后三个 IP 地址,

通过这些 IP 地址可以推断出客户端的 IP 地址。API Gateway 支持

在路由级别设置此头部,可以通过以下代码来实现:

```csharp

var response =

Response(, new { });

der("X-Forwarded-For",

Address);

```

在上面的代码中,我们将“X-Forwarded-For”头部设置为客户

端的最后三个 IP 地址。这种方法的缺点是,当客户端通过代理服务

器或负载均衡器请求时,头部信息可能会被篡改。

2. 通过 API Gateway 内部 IP 获取客户端 IP 地址

第二种方法是通过 API Gateway 内部 IP 来获取客户端 IP 地

址。这种方法需要在 API Gateway 中配置内部 IP,可以在路由级别

设置内部 IP,也可以通过 API 配置中设置内部 IP。当客户端请求

API 时,API Gateway 会使用内部 IP 来接收请求,然后将其转发到

目标服务器。可以通过以下代码来实现:

```csharp

var response =

Response(, new { });

der("X-Forwarded-For",

Address);

der("X-Forwarded-Proto",

);

der("X-Forwarded-Host",

);

der("X-Forwarded-Server",

);

der("X-Forwarded-Port",

Port);

der("X-Forwarded-Proto",

);

```

在上面的代码中,我们将“X-Forwarded-For”头部设置为客户

端的最后三个 IP 地址,并将其他头部设置为客户端请求的详细信息。

这种方法可以在 API Gateway 内部正确地获取客户端 IP 地址,但

需要配置 API Gateway 的内部 IP。