Я успешно ограничил 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" никому не доступен. Любая помощь будет принята с благодарностью.
Используйте путь
вместо url
Это извлекает путь URL запроса, который начинается с первого слэша. и заканчивается перед вопросительным знаком (без главной части). Типичное использование - с кэши с возможностью предварительной выборки, а также порталы, которые должны агрегировать несколько информацию из баз данных и хранить ее в кэше. Обратите внимание, что с исходящей кэш, было бы мудрее использовать "url" вместо этого. С ACL обычно используемый для точного совпадения имён файлов (например: "/login.php"), или частей каталога, использующего производные формы. См. также "url" и "base" методы получения.
ACL производных : путь: точное соответствие строки путь_beg : совпадение префиксов путь_dir : соответствие субдира path_dom : соответствие домена путь_конец: совпадение суффиксов путь_len : соответствие длины путь_reg : регексное совпадение путь_подпись : соответствие подстроки