通过负载均衡器过滤 *.my-site.com/ 流量并撤销其余流量

Filter *.my-site.com/ traffic through a load balancer and revoke the rest

我有一个站点,人们可以使用特定的 url 访问他们,他们被分配为 user1.my-site.comuser2.my-site.com。用户共享同一台基础服务器,我想限制不需要的流量。我的目标是,如果任何 url 与 *.my-site.com/ 不匹配,它就不会访问我的服务器。

我已经研究过使用负载均衡器转发特定流量,但看起来它仍然会影响我的服务器。

我查看了 WAF 字符串匹配,我可能漏掉了一些东西,但我没有看到如何过滤不匹配 *.my-site.com/ 模式的流量

我希望有一种方法可以过滤通过 AWS 中应用程序负载均衡器的流量,因此我只能允许来自 url 为 *.my-site.com/ 的主机的流量。但是我看到在 url.

的第一个 / 之后只有字符串匹配

使用 WAF 拒绝除 *.example.com 之外的所有请求:

针对 Header 创建 字符串匹配 条件 -- Host header -- 匹配类型 结束,值为 .example.com -- 开头没有 *。配置 WAF 以阻止不符合条件的请求 ("host header ends with the bytes .example.com")。

https://docs.aws.amazon.com/waf/latest/developerguide/web-acl-string-conditions.html


在 Application Load Balancer 中拒绝除 *.example com 之外的所有请求 而无需 使用 WAF 更容易...您只需要求平衡器阻止所有请求, 除了 之前 处理 *.example.com.

首先,创建一个匹配 Host header *.example.com 的新侦听器规则(与 WAF 不同,这个在开头确实需要一个 *),对于操作,选择您的正常的、现有的目标群体。这告诉平衡器将目标组用于 *.example.com——它已经在这样做了,但是这一步不是多余的……这是必需的,因为下一步是:

将侦听器的默认侦听器规则操作更改为 Return 固定响应。将状态代码设置为 403,将内容类型设置为 text/plain,并将消息 body 设置为类似 ohai, blocked u. 的通用内容(或者尝试 Access Denied,或者使用其他代码,如果你喜欢,比如带有 "Service Unavailable" 消息的 503...从技术上讲并不重要)。

You can use fixed-response actions to drop client requests and return a custom HTTP response. You can use this action to return a 2XX, 4XX, or 5XX response code and an optional message.

https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-listeners.html#fixed-response-actions

任何与您的域不匹配的请求都将落入默认侦听器规则,并收到您的静态错误响应。


这些配置都不会向您的服务器发送任何请求无效域的流量。

在任一配置中,ALB 日志仍将包含被阻止的请求。 WAF 不会阻止流量到达 ALB,它只是阻止 ALB 在遇到阻止规则后对其进行处理。