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

标签 php amazon-web-services nginx zend-framework vpn

我们有一个 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/

相关文章:

mysql - MS-Excel Power Pivot + Amazon Redshift : possible to connect the data source?

php - 调试504网关超时及实际原因及解决方法

php - 带有 Nginx 1.6.2 和 PHP 5.6.4 的 Ubuntu 14.04 上的 502 Bad Gateway

php - 无法将Silverstripe 4错误日志写入电子邮件

php - Symfony 分析器抛出 404

php - mysql execute() (PDO) 不在表中插入任何内容

php - 为什么curl返回null?

php - laravel 或 AWS 没有检测到我的 https

amazon-web-services - 在 Hadoop 1.0.3 中从 AWS EMR 上的 HDFS 清除数据

javascript - Nginx 和 Node.js 服务器 - 多个任务