AWS: обратный прокси-сервер NGinx и группы безопасности
У меня есть два сервера, которые называются NGinxServer и AppServer. NGinxServer является доступной точкой входа для всех вызовов AppServer. По соображениям безопасности я изменил группу безопасности для AppServer, чтобы запретить какие-либо соединения, кроме соединений, поступающих из группы безопасности NGinxServer (NGinxServer-SG). Однако, когда я это делаю, я не могу выполнить какие-либо прокси-запросы из Web Browser -> NGinxServer -> AppServer.
Что я могу делать не так? Я думал, что NGinx проксирует всю продолжительность соединения, но я могу только думать, что либо NGinx либо передает соединение, которое блокируется правилами группы безопасности, либо что AWS видит прокси-трафик, в котором все еще есть данные, которые его показывают. как исходящий из веб-браузера, а не NGinx и блокирует его соответственно.
Любая помощь очень ценится.
РЕДАКТИРОВАТЬ РЕШЕНИЕ: комментарий / ответ, предоставленный Майклом - sqlbot является правильным решением. Я использовал публичный IP вместо частного IP.
1 ответ
Использование публичного IP-адреса внутренней цели при доступе к ней из вашего VPC имеет несколько проблем:
Идентификация исходного компьютера как члена определенной группы безопасности потеряна, потому что трафик должен покинуть ваш VPC и вернуться через Интернет-шлюз. На данный момент это уже не "внутренний" трафик.
Хуже того, вы платите за этот трафик, чтобы покинуть свой VPC, а затем платите за его возвращение.
В большинстве регионов это составляет всего около 0,02 долл. США / ГБ, из них - 0,01 долл. США / ГБ и 0,01 долл. США / ГБ, но это излишние затраты и небольшая задержка.
https://aws.amazon.com/ec2/pricing/on-demand/
Также обратите внимание, что существует некоторая встроенная магия DNS, если вам нужно имя хоста для экземпляра, который ведет себя по-разному, независимо от того, доступен ли он изнутри или снаружи.
Если общедоступный IP-адрес вашего экземпляра - 203.0.113.20, и это общедоступное имя хоста DNS выглядит следующим образом:
ec2-203-0-113-20.compute-1.amazonaws.com
Затем вы можете создать DNS CNAME следующим образом:
my-instance.example.com CNAME ec2-203-0-113-20.compute-1.amazonaws.com.
С этой конфигурацией ваш my-instance.example.com
имя хоста автоматически преобразуется в частный IP, если вы используете его внутри VPC, и в публичный IP, если вы используете его извне.
Также обратите внимание, что в случае частного сервера вы должны иметь его в частной подсети с использованием шлюза NAT или экземпляра NAT, когда он отправляет исходящие запросы на доступ к Интернету (например, загрузка обновлений, установка его часов и доступ к третьей стороне). API).
Нет никакого снижения производительности или платы за трафик, который пересекает границы подсети в зоне доступности. Похоже, что трафик проходит через дополнительный маршрутизатор, чтобы пересечь границы подсети, но этого маршрутизатора на самом деле нет - трафик, пересекающий подсети в пределах одного VPC в пределах AZ, фактически не проходит через какое-либо дополнительное оборудование... так что ваш прокси может находиться в общедоступной подсети, а этот веб-сервер может быть в частной.