У меня есть два сервера: NGinxServer и AppServer. NGinxServer - это доступная точка входа для всех вызовов AppServer. По соображениям безопасности я изменил группу безопасности для AppServer, чтобы не разрешать никаких подключений, кроме тех, которые поступают из группы безопасности NGinxServer (NGinxServer-SG). Однако когда я это делаю, я не могу выполнять какие-либо проксированные запросы из веб-браузера -> NGinxServer -> AppServer.
Что я делаю не так? Я думал, что NGinx проксирует всю продолжительность соединения, но я могу только думать, что либо NGinx либо передает соединение, которое блокируется правилами группы безопасности, либо AWS видит прокси-трафик, который все еще имеет данные, которые его показывают. как исходящие из веб-браузера, а не из NGinx, и соответственно блокирует его.
Любая помощь приветствуется.
РЕДАКТИРОВАТЬ РЕШЕНИЕ: комментарий / ответ, предоставленный Майклом - sqlbot - правильное решение. Я использовал публичный IP вместо частный IP.
Использование общедоступного 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 в пределах зоны доступности, фактически не проходит через какое-либо дополнительное оборудование ... так что ваш прокси может находиться в публичной подсети, а этот веб-сервер может быть в частной.