日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HAProxy的访问控制

發布時間:2024/8/22 编程问答 41 如意码农
生活随笔 收集整理的這篇文章主要介紹了 HAProxy的访问控制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

HAProxy的ACL用于實現基于請求報文首部、響應報文的內容或其他的環境狀態信息來做出轉發決策,這大大增強了其配置彈性,其配置法則通常分為兩步,
首先去定義ACL,即定義一個測試條件,而后在條件得到滿足時執行某特定的動作,如阻止請求或轉發至某特定的后端。
1、定義ACL語法:
acl <aclname> <criterion> [flags] [operator] <value> ...
<aclname>:ACL名稱,區分字符大小寫,且只能包含大小寫字母,數字,-(連接線),_(下劃線),.(點號),和:(冒號);
haproxy中,acl可以重名,這可以把多個測試條件定義為一個共同的acl;
<criterion>:測試標準,即對什么信息發起測試,測試方式可以由[flags]指定的標志進行調整,而有些測試標準也可以需要為其在<value>指定指定一個操作符[operator]
[flags]:目前haproxy的acl支持的標志位有3個:
    -i:不區分<value>中模式字符的大小寫;
    -f:從指定的文件中加載模式;
    --:標識符的強制結束標記,在模式中的字符串像標記符時使用;
<value>:acl測試條件支持的值有以下四類:
    整數或整數范圍:如1024:65535表示從1024至65535,僅支持使用正整數(如果出現類似小數的標識,其為通常為測試版本),其支持使用的操作符有五個
        分別為:eq、ge、gt、le和lt;
    字符串:支持使用"-i"以忽略字符大小寫,支持使用"\"進行轉義,如果在模式首部出現了-i,可以在其之前使用"--"標志位;
    正則表達式:其機制類同字符串匹配
    IP地址及網絡地址
同一個acl中可以指定多個測試條件,這些測試條件需要由邏輯操作符指定其關系,條件件的組合測試關系有三種:
    "與"(默認即為與操作)
    "或"(使用"||"操作符)
    "非"(使用"!"操作符)

2、常用的測試標準(criteria)
be_sess_rate(backend) <integer>
用于測試指定的backend上會話創建的速率(即每秒創建的會話數)
是否滿足指定的條件:常用于在制定backend上的會話速率過高時將用戶請求轉發至另外的backend,用于組織攻擊行為,例如:
backend dynamic
    mode http
    acl being_scanned be_sess_rate gt 50
    redirect location /error_pages/denied.html if being_scanned
fe_sess_rate <integer>
用于測試指定的frontend(或當前frontend)上的會話創建速率是否滿足指定的條件:常用于為frontend指定一個合理的會話創建速錄
上限以防止服務被濫用。例如下面的例子限定入站郵件速率不能大于50封/秒,所有在此指定范圍之外的請求都將被延遲50毫秒。
frontend mail
    bind :25
    mode tcp
    maxconn 500
    acl too_fast fe_sess_rate ge 50
    tcp-request inspect-delay 50ms
    tcp-request content accept if ! too_fast
    tcp-request content accept if WAIT_END
hdr(header) <string>
用于測試請求報文中的所有首部或指定首部是否滿足指定條件,指定首部時,其名稱不區分大小寫,且在括號"()"中不能有任何多余的
空白字符,測試服務器端的響應報文時可以使用shdr(),例如下面的例子用于測試首部Connection的值是否為close。
    hdr(Connection) -i close
method <string>
測試HTTP請求報文的方法
path_beg <string>
用于測試請求的URL是否以<string>指定的模式開頭,下面的例子用于測試URL是否以/static、/images、/javascript或/stylesheets頭
acl url_static    path_beg    -i    /static /images /javascript /stylesheets
path_end <string>
用于測試請求的URL是否以<string>指定的模式結尾,例如下面的例子測試URL是否以jpg、gif、png、css或js結尾
acl url_static    path_end    -i .jpg .gif .png .css .js
hdr_beg <string>
用于測試請求報文的指定首部的開頭部分是否符合<string>
指定的模式。例如,下面的例子測試請求是否為提供靜態內容的主機img、vides、download或ftp
acl host_static hdr_beg(host) -i img. video. download. ftp.
hdr_end <string>
用于測試請求報文的指定首部的結尾部分是否符合<string>指定的模式;
3、動靜分離實例:
frontend http-in
    bind *:80
    mode http
    log global
    option httpclose
    option logasap
    option dontlognull
    capture request header Host len 20
    capture request header Refer len 60
    acl url_static    path_beg    -i     /static /images /javascript /stylesheets
    acl url_static    path_end    -i .jpg .gif .png .css .js

use_backend static_servers    if url_static
    default_backend    dynamic_servers

backend static_servers    
    balance roundrobin
    server imgsrv1 192.168.1.110:80 check maxconn 6000
    server imgsrv2 192.168.1.184:80 check maxconn 6000

backend dynamic_servers
    cookie srv insert nocache
    balance roundrobin
    server websrv1 192.168.1.111:80 check maxconn 1000 cookie websrv1
    server websrv2 192.168.1.112:80 check maxconn 1000 cookie websrv2

總結

以上是生活随笔為你收集整理的HAProxy的访问控制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。