Назад | Перейти на главную страницу

HA-Proxy и ACL для отказа http-запроса

Запуск 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
Какое поведение правильное?