Запуск ha-proxy 1.6.
Может кто-нибудь сказать мне, почему ACL и запрет HTTP-запроса не работают?
Я пробовал режим http, режим tcp, конец косой черты, отсутствие косой черты в пути, path_end, разные маски сети, один единственный IP-адрес и т. Д. Я не могу заставить его работать. Просто нет контроля доступа. Я могу получить доступ к каталогу и файлам откуда угодно.
global
pidfile /var/run/haproxy.pid
daemon
defaults
mode tcp
retries 5
option redispatch
option dontlognull
option tcp-smart-accept
option tcp-smart-connect
listen front-end
bind xxx.xxx.xxx.xx1:80
bind xxx.xxx.xxx.xx2:80
mode http
balance roundrobin
option forceclose
option http-server-close
option forwardfor
maxconn 2000
timeout http-request 15s
timeout connect 15s
timeout server 60s
timeout client 30s
timeout http-keep-alive 15s
acl network_allowed src xxx.xxx.xxx.xx5
acl inside path_beg,url_dec -i /path/to/directory/
http-request deny if inside !network_allowed
server 1 xxx.xxx.xxx.xx1:80 weight 10 SERVER1 check
server 2 xxx.xxx.xxx.xx2:80 weight 10 SERVER2 check
server 3 xxx.xxx.xxx.xx3:80 weight 15 SERVER3 check
Попробуйте добавить -m beg
:
acl inside path_beg,url_dec -m beg -i /path/to/directory/
Кроме того, чего вы пытаетесь достичь?
Как я вижу и проверяю на моем сервере: прямо сейчас с src xxx.xxx.xxx.xx5
у вас есть доступ ко всему, а с других адресов вы получите 403
для /path/to/directory
:
curl http://example.com/path/to/directory/
<html><body><h1>403 Forbidden</h1>
Request forbidden by administrative rules.
</body></html>
Но если вы добавите OR
на ваш http-request deny
:
http-request deny if inside OR !network_allowed
тогда вы получите 403
со всех адресов кроме src xxx.xxx.xxx.xx5
и с этого адреса вы получите 403
для /path/to/directory
Какое поведение правильное?