【发布时间】:2018-05-24 23:37:45
【问题描述】:
我有一个 API 网关,它通过 VPC 链接将请求发送到网络负载均衡器 (NLB),然后转发到目标实例。根据 AWS 文档,当目标组是实例时,源 ip 不受限制地传递给目标实例,但如果通过 ip 地址,则为 NLB ip 地址。然而,即使目标组设置为实例,我仍然获得 NLB ip 地址。
【问题讨论】:
标签: amazon-web-services aws-api-gateway elastic-load-balancer
我有一个 API 网关,它通过 VPC 链接将请求发送到网络负载均衡器 (NLB),然后转发到目标实例。根据 AWS 文档,当目标组是实例时,源 ip 不受限制地传递给目标实例,但如果通过 ip 地址,则为 NLB ip 地址。然而,即使目标组设置为实例,我仍然获得 NLB ip 地址。
【问题讨论】:
标签: amazon-web-services aws-api-gateway elastic-load-balancer
如果需要源ip,可以将上下文变量context.identity.sourceIp映射到集成头docs。您将能够在您的服务器中访问此标头。
NLB 的文档是指proxy protocol 2 支持,这将允许您获取到 nlb 的连接的源 ip。这需要运行启用代理协议的 Web 服务器(squid/nginx 有一个标志来启用它)。对于 VPC 链接,此 ip 与您对服务器的请求的源 ip 不同,因为 NLB 实际上看到来自 API 网关的连接,因此在 NLB 上启用此功能将返回 API 网关的内部 ip 地址。
大摇大摆的样子
...
"requestParameters" : {
"integration.request.header.x-source-ip" : "context.identity.sourceIp",
}
...
【讨论】: