如何使用 AWS/nginx/Zend 制作站点到站点 VPN



我们有一个Zend(1.12.20(php webapp,它通过docker容器在AWS上运行。 我们在这个php webapp和其他webapp之间也有nginx路由请求。

php webapp 有一个公共前端和一个管理后端。 即

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

我们希望将http://public-url.com/administrative-backend访问限制为仅使用站点到站点 VPN 的用户,同时保持所有 Internet 都可以访问公共前端。

这应该在堆栈的哪一层实现? AWS 是否能够区分对容器提供的特定 URL 的请求,并使其中一些请求需要 VPN 授权? nginx可以以某种方式处理这个问题吗?

如何将对 php Web 应用程序特定部分的访问限制为 vpn 用户,同时让 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/。

不过,为了提高安全性,我要做的是将公共和私有(管理员(放在单独的容器中。只需禁用容器中为公众服务的所有管理内容即可。

最新更新