我已经设置了 ALB 负载均衡器。我想阻止将请求转发到特定路径,例如不要转到 mydomain.com/admin/
当前监听器的设置如下:
1 Arn IF Path is /service/ forward to tg1
last HTTP80:default action IF Requests otherwise not routed forward to tg1
所以我只想允许流量流向路径:/service/(mydomain.com/service/)而不是/admin/
我如何才能阻止流向负载均衡器的特定路径的流量?
任何帮助,将不胜感激。
答案1
创建一个空目标组。随便命名,例如blackhole
。如果您有多个 VPC,请选择正确的 VPC。新目标组的其余参数可以保留为默认值。不要将任何实例分配给目标组。
为 ALB 上的每个侦听器创建一条规则IF path is /admin*
THEN Forward to blackhole
。将其放在列表的尽可能高的位置。
由于目标组中的 0 个目标始终 100% 处于不健康状态,因此 ALB 始终无法将请求传递到后端,因此当任何与此路径匹配的请求到达时都会抛出错误。通配符*
匹配 0 个或更多字符,因此此路径下的所有内容都会被此规则有效拒绝。
$ curl -v xxxx.us-west-2.elb.amazonaws.com/admin
* About to connect() to xxxx.us-west-2.elb.amazonaws.com port 80 (#0)
* Trying x.x.x.x... connected
> GET /admin HTTP/1.1
> User-Agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
> Host: xxxx.us-west-2.elb.amazonaws.com
> Accept: */*
>
< HTTP/1.1 503 Service Temporarily Unavailable
< Server: awselb/2.0
< Date: Thu, 10 Aug 2017 16:38:15 GMT
< Content-Type: text/html
< Content-Length: 178
< Connection: keep-alive
<
<html>
<head><title>503 Service Temporarily Unavailable</title></head>
<body bgcolor="white">
<center><h1>503 Service Temporarily Unavailable</h1></center>
</body>
</html>
* Connection #0 to host xxxx.us-west-2.elb.amazonaws.com left intact
* Closing connection #0
当然,错误并不完全真实,因为它是503 Service Temporarily Unavailable
而不是403 Forbidden
,但这确实达到了阻止 ALB 上的特定路径模式的目的。