Haproxy
用於 http-request 的 HA-Proxy 和 ACL 拒絕
執行 ha-proxy 1.6。
有人可以告訴我為什麼 ACL 和 http-request 拒絕不起作用嗎?
我嘗試過模式 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
行為是正確的?