目前,我在 AWS 上使用应用程序负载均衡器设置了一个应用程序,目标组中有 2 个 EC2:
DNS -> AWS-ALB -> EC2(2)
我需要帮助,只允许应用程序 URL 上下文路径上的某些 IP 地址。
例如:www.abc.com 应该可供所有人访问,但 www.abc.com/xyz 应该只能对某些 IP 地址进行访问。
我在 EC2 上尝试了 NGINX 解决方案,并且仅当我使用允许和拒绝规则直接命中 EC2 IP 时才有效。
目前,我在 AWS 上使用应用程序负载均衡器设置了一个应用程序,目标组中有 2 个 EC2:
DNS -> AWS-ALB -> EC2(2)
我需要帮助,只允许应用程序 URL 上下文路径上的某些 IP 地址。
例如:www.abc.com 应该可供所有人访问,但 www.abc.com/xyz 应该只能对某些 IP 地址进行访问。
我在 EC2 上尝试了 NGINX 解决方案,并且仅当我使用允许和拒绝规则直接命中 EC2 IP 时才有效。
我能够通过基于路径和源 IP 组合在 ALB 上设置侦听器规则来解决此问题。
假设您希望允许从 IP 地址池 123.123.123.120/30 访问 www.abc.com/xyz/*,并拒绝其他任何人。
ALB 规则:
如果源 IP 是 123.123.123.120/30 AND 路径是 /xyz/* THEN Forward to your-application-target-group
IF Path 是 /xyz/* THEN 返回固定响应 403(或任何适合您的用例)
IF 请求否则未路由 THEN Forward to your-application-target-group
https://docs.aws.amazon.com/elasticloadbalancing/latest/application/listener-update-rules.html
如果该区域可用,您可以将 WAF 与 ALB 结合使用。您可以创建一个简单的规则,其中包含两个条件 URI 匹配和 IP 地址不匹配,因为 RULE 中的条件适用于 AND 操作,它应该符合您的要求。
https://docs.aws.amazon.com/waf/latest/developerguide/web-acl-rules-creating.html