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",                    
   }
...
Другие вопросы по тегам