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, фактически не проходит через какое-либо дополнительное оборудование... так что ваш прокси может находиться в общедоступной подсети, а этот веб-сервер может быть в частной.

Другие вопросы по тегам