AWS: IP-адрес источника не виден в экземпляре через сетевой балансировщик нагрузки
У меня есть API-шлюз, который отправляет запросы через ссылку VPC на балансировщик сетевой нагрузки (NLB), который затем перенаправляется на целевой экземпляр. В соответствии с документацией AWS, когда целевая группа является экземпляром, исходный ip передается неограниченному экземпляру целевого экземпляра, но если по ip-адресу, то ip-адрес NLB. Однако, хотя целевая группа установлена на экземпляр, я все еще получаю IP-адрес NLB.
1 ответ
Если вам нужен исходный ip, вы можете отобразить переменную контекста context.identity.sourceIp
к заголовку интеграции документов. Вы сможете получить доступ к этому заголовку на вашем сервере.
Документы для NLB относятся к поддержке протокола Proxy Protocol 2, которая позволит вам получить исходный IP-адрес соединения с NLB. Это требует запуска веб-сервера с включенным прокси-протоколом (для этого у squid / nginx есть флаг). Что касается связей VPC, этот ip не совпадает с вашим исходным ip запроса к вашему серверу, поскольку NLB фактически видит соединения от API-шлюза, поэтому включение этого на NLB будет возвращать внутренние ip-адреса API-шлюза.
В чванстве это будет выглядеть
...
"requestParameters" : {
"integration.request.header.x-source-ip" : "context.identity.sourceIp",
}
...