Как заблокировать пересылку loadbalancer по определенному пути?

Я настроил ALB loadbalancer. Я хочу запретить переадресацию запроса на определенный путь, например, не переходить на 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 /

Как я могу предотвратить трафик к определенному пути, который идет к loadbalancer?

Любая помощь будет оценена.

2 ответа

Решение

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

Создайте правило для каждого слушателя в вашем ALB, IF path is /admin*THEN Forward to blackhole, Поместите это как можно выше в список.

Так как 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 Temporarily Unavailable скорее, чем 403 Forbidden, но это выполняет цель блокирования определенных шаблонов пути на ALB.

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

Для большего контекста вот объявление AWS.

Другие вопросы по тегам