Как заблокировать пересылку 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.