Я успешно ограничил 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" никому не доступен. Любая помощь будет оценена по достоинству.
Использовать path
вместо того url
Это извлекает URL-путь запроса, который начинается с первой косой черты и заканчивается перед вопросительным знаком (без части узла). Типичное использование - с кешами с возможностью предварительной выборки и с порталами, которым необходимо агрегировать несколько данных из баз данных и хранить их в кешах. Обратите внимание, что для исходящих кешей было бы разумнее использовать "url". В ACL он обычно используется для сопоставления точных имен файлов (например: "/login.php") или частей каталога с использованием производных форм. См. Также методы выборки "url" и "base".
ACL derivatives : path : exact string match path_beg : prefix match path_dir : subdir match path_dom : domain match path_end : suffix match path_len : length match path_reg : regex match path_sub : substring match