Haproxy

在 HAProxy 中限制 URL 的正則表達式

  • June 3, 2018

我已經成功地將我的網路應用程序中的 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

我希望所有使用者都能訪問“/abc/api” URL,而“/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

引用自:https://serverfault.com/questions/914438