Регулярное выражение для ограничения URL-адреса в HAProxy

Я успешно ограничил URL-адрес в моем веб-приложении определенным доверенным IP-адресом, используя указанную ниже конфигурацию в конфигурации haproxy

acl trusted-ip src -f /etc/haproxy/whitelist.lst    
acl protected-page url /abc /abc/    
acl allowed-page url /abc/api/
http-request deny if protected-page !allowed-page !trusted-ip

Я хочу, чтобы все пользователи имели доступ к URL-адресу «/ abc / api», а «/ abc» будет доступен только для доверенного IP. Проблема здесь в том, что если кто-либо с ненадежного IP вводит "/ abc? Something", открывается URL "/ abc", чтобы избежать этого, я изменил конфигурацию на

acl trusted-ip src -f /etc/haproxy/whitelist.lst
acl protected-page url_reg ^(?!\/abc\/api).*$
http-request deny if protected-page !trusted-ip

. Теперь я смог решить вышеупомянутую проблема, но "/ abc / api" никому не доступен. Любая помощь будет принята с благодарностью.

2
задан 30 May 2018 в 15:36
1 ответ

Используйте путь вместо url

Это извлекает путь URL запроса, который начинается с первого слэша. и заканчивается перед вопросительным знаком (без главной части). Типичное использование - с кэши с возможностью предварительной выборки, а также порталы, которые должны агрегировать несколько информацию из баз данных и хранить ее в кэше. Обратите внимание, что с исходящей кэш, было бы мудрее использовать "url" вместо этого. С ACL обычно используемый для точного совпадения имён файлов (например: "/login.php"), или частей каталога, использующего производные формы. См. также "url" и "base" методы получения.

ACL производных :
 путь: точное соответствие строки
 путь_beg : совпадение префиксов
 путь_dir : соответствие субдира
 path_dom : соответствие домена
 путь_конец: совпадение суффиксов
 путь_len : соответствие длины
 путь_reg : регексное совпадение
 путь_подпись : соответствие подстроки
1
ответ дан 3 December 2019 в 12:32

Теги

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