I have set up ALB loadbalancer. I want to prevent forwarding request towards a specific path like not to go to mydomain.com/admin/
The current Listeners set up look like below:
1 Arn IF Path is /service/ forward to tg1
last HTTP80:default action IF Requests otherwise not routed forward to tg1
So I want to allow traffic only towards path: /service/ (mydomain.com/service/) not /admin/
How I can prevent traffic to a specific path that comes towards loadbalancer?
Any help would be appreciated.
Создайте пустую целевую группу. Называйте это как хотите, например черная дыра
. Выберите правильный VPC, если у вас их несколько. Остальные параметры для новой целевой группы можно оставить со значениями по умолчанию. Не назначайте никакие экземпляры целевой группе.
Создайте правило для каждого слушателя на вашем ALB, ЕСЛИ путь - / admin *
ТОГДА Перенаправить в черную дыру
. Поместите это как можно более высокое место в списке.
Поскольку 100% из 0 целей в целевой группе всегда будут неработоспособными, 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 Tempoporary Unavailable
, а не 403 Запрещено
, но это действительно выполняет цель блокировки определенных шаблонов пути на ALB.
Вы можете просто выбрать возврат фиксированного ответа по вашему выбору вместо отправки запроса в пустую целевую группу, как @Michael - sqlbot предложил.