How to block loadbalancer forwarding to a specific path?

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.

1
задан 9 August 2017 в 18:01
2 ответа

Создайте пустую целевую группу. Называйте это как хотите, например черная дыра . Выберите правильный VPC, если у вас их несколько. Остальные параметры для новой целевой группы можно оставить со значениями по умолчанию. Не назначайте никакие экземпляры целевой группе.

Создайте правило для каждого слушателя на вашем ALB, ЕСЛИ путь - / admin * ТОГДА Перенаправить в черную дыру . Поместите это как можно более высокое место в списке.

Illustration from AWS console creating the rule described here

Поскольку 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.

3
ответ дан 3 December 2019 в 16:44

Вы можете просто выбрать возврат фиксированного ответа по вашему выбору вместо отправки запроса в пустую целевую группу, как @Michael - sqlbot предложил.

Для более подробного контекста вот объявление AWS .

enter image description here

3
ответ дан 3 December 2019 в 16:44

Теги

Похожие вопросы