Назад | Перейти на главную страницу

AWS: обратный прокси-сервер NGinx и группы безопасности

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