我们有一个 Zend (1.12.20) php webapp,它通过 docker 容器在 AWS 上运行。我们还在这个 php web 应用程序和其他 web 应用程序之间设置了 nginx 路由请求。
php webapp 有一个公共(public)前端和一个管理后端。即
http://public-url.com
http://public-url.com/administrative-backend
我们希望将 http://public-url.com/administrative-backend
的访问权限限制为仅站点到站点 VPN 上的用户,同时保持公共(public)前端可供所有人访问互联网。
这应该在堆栈的哪一层实现? AWS 是否能够区分对容器提供的特定 URL 的请求,并使其中一些请求需要 VPN 授权? nginx 能以某种方式处理这个问题吗?
如何限制 VPN 用户对 php Web 应用程序特定部分的访问,同时让 Web 应用程序的其余部分可公开访问?
最佳答案
您可以使用 nginx 允许对公众的访问,但仅允许从授权的 IP/网络访问/管理后端,如下所示:
location ~ /administrative-backend {
allow 172.31.0.0/16;
deny all;
}
172.31.0.0/16 可能是您的 VPC 或 VPN 的 IP 地址。请查看http://nginx.org/en/docs/http/ngx_http_core_module.html#location了解更多详情。
如果您正在寻找 AWS 中内置的功能,它具有根据请求路径(在本例中为/* 与/administrative-backend/*)路由流量的工具。查看应用程序负载均衡器(不是经典的 ELB)https://aws.amazon.com/elasticloadbalancing/applicationloadbalancer/ .
不过,为了提高安全性,我会做的是将公共(public)和私有(private)(管理)放在单独的容器中。只需禁用容器中为公众服务的所有管理内容即可。
关于php - 如何使用 AWS/nginx/Zend 制作站点到站点 VPN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43877970/