Как сделать сайт типа «сайт-сайт» с помощью AWS / nginx / Zend

У нас есть PHP-приложение Zend (1.12.20), которое работает на AWS через док-контейнеры. У нас также есть запросы маршрутизации nginx между этим веб-приложением php и другими веб-приложениями.

Веб-приложение php имеет публичный и административный фон. то есть

http://public-url.com
http://public-url.com/administrative-backend

Мы хотим ограничить доступ к http://public-url.com/administrative-backend только пользователям, которые находятся на сайте vpn, при этом общедоступный интерфейс остается доступным для всего Интернета.

На каком уровне стека это должно быть реализовано? Может ли AWS различать запросы к определенному URL-адресу, обслуживаемому контейнером, и для некоторых из них требуется VPN-авторизация? Может ли nginx справиться с этим как-нибудь?

Как я могу ограничить доступ к определенной части веб-приложения php для пользователей vpn, оставляя остальную часть веб-приложения общедоступной?

2

Решение

Вы можете использовать nginx, чтобы разрешить доступ к / для публики, но разрешить доступ к / административному бэкэнду только с авторизованных IP / сетей, например:

location ~ /administrative-backend {
allow   172.31.0.0/16;
deny    all;
}

172.31.0.0/16 может быть IP-адресом вашего VPC или VPN. пожалуйста, проверьте http://nginx.org/en/docs/http/ngx_http_core_module.html#location Больше подробностей.

Если вы ищете что-то встроенное в AWS, у него есть инструменты для маршрутизации трафика в зависимости от пути запроса (в данном случае / * vs / administrator-backend / *). Проверьте балансировщики нагрузки приложения (не классический ELB) https://aws.amazon.com/elasticloadbalancing/applicationloadbalancer/.

Что бы я ни делал, для большей безопасности помещать public и private (admin) в отдельные контейнеры. Просто отключите все содержимое админа в контейнере, которое будет обслуживать публику.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]