Ubuntu 24.04
Sponsored Link

HAProxy : ACL सेटिंग2024/05/28

 
HAProxy ACL सेट करने के नियमों के अनुसार बैकएंड सर्वर पर अनुरोध वितरित करना संभव है।
यह उदाहरण निम्न प्रकार से पर्यावरण पर आधारित है।
आपके द्वारा HAProxy सर्वर पर ACL सेट किए गए होस्टनाम या डोमेन नाम के अनुरोध प्राप्त करने के लिए आपको DNS सेट करने की आवश्यकता है।
-----------+-------------+
           |             |
           |10.0.0.30    |
+----------+-----------+ |
|   [ dlp.srv.world ]  | |
|        HAProxy       | |
+----------------------+ |
                         |
-------------+-----------+--------------+----------
             |           |              |          
             |10.0.0.51  |              |10.0.0.52 
+-----------+----------+ | +-----------+----------+
| [ node01.srv.world ] | | | [ node02.srv.world ] |
|      Web Server#1    | | |      Web Server#2    |
+----------------------+ | +----------------------+
                         |
-------------+-----------+--------------+----------
             |                          |          
             |10.0.0.53                 |10.0.0.31 
+-----------+----------+   +-----------+----------+
| [ node03.srv.world ] |   |  [ www.srv.world ]   |
|      Web Server#3    |   |      Web Server#4    |
+----------------------+   +----------------------+

[1]
ACL का सिंटैक्स इस प्रकार है।
acl <aclname> <criterion> [flags] [operator] [<value>] ...
<aclname> के लिए, [operator] के लिए अपनी पसंद का कोई भी @ACL नाम निर्दिष्ट करें, कुछ मानदंड एक ऑपरेटर का समर्थन करते हैं।
दूसरों के लिए, नीचे आधिकारिक दस्तावेज़ देखें।
⇒ https://www.haproxy.com/documentation/hapee/latest/onepage/#7.3.6
निम्नलिखित मानदंड और झंडों की सूची दी गई है जिनका अक्सर उपयोग किए जाने की उम्मीद है।
मानदंड विवरण
path अनुरोध का URL पथ निकालता है
query अनुरोध की क्वेरी स्ट्रिंग निकालता है
hdr HTTP अनुरोध में हेडर का अंतिम अल्पविराम से अलग किया गया मान लौटाता है
src सत्र के क्लाइंट का स्रोत आईपी पता
L4 मोड पर उपयोग करना संभव है
dst_port गंतव्य टीसीपी पोर्ट
केवल L4 मोड पर उपयोग संभव है
झंडे विवरण
-i मामले की अनदेखी करें
-f किसी फ़ाइल से पैटर्न लोड करें
-m पैटर्न मिलान विधि निर्दिष्ट करें
विधियों के लिए सही तालिका देखें
-n DNS रिज़ॉल्यूशन को प्रतिबंधित करें
-u ACL की अद्वितीय आईडी को बाध्य करें
तरीका विवरण
bool मान को बूलियन के रूप में जांचें
beg दिए गए पैटर्न से शुरू होने वाले मान का मिलान करें
end दिए गए पैटर्न के साथ समाप्त होने वाले मान का मिलान करें
int मान को पूर्णांक के रूप में मिलान करें
ip आईपी पते के रूप में मूल्य का मिलान करें
len प्रदान की गई लंबाई के अनुसार मान का मिलान करें
reg नियमित अभिव्यक्तियों के साथ मान का मिलान करें
str मान को एक स्ट्रिंग के रूप में जांचें
sub दिए गए पैटर्न वाले मान से मिलान करें
[2] HAProxy कॉन्फ़िगर करें।
root@dlp:~#
vi /etc/haproxy/haproxy.cfg
# अंत में जोड़ें
frontend http-in
        bind *:80
        option             forwardfor

        # ACL सेट करें
        # HTTP अनुरोध शीर्षलेख में [Host] [node01.srv.world] है
        acl host_node01 hdr(Host) -i node01.srv.world

        # HTTP अनुरोध हेडर में [Host] [node02] से शुरू होता है
        acl host_node02 hdr_beg(Host) -i node02

        # HTTP अनुरोध शीर्षलेख में [@Host] में [develop] शामिल है
        acl host_node03 hdr_sub(Host) -i develop

        # HTTP अनुरोध शीर्षलेख में [Host] का डोमेन नाम [virtual.host] है
        acl host_virtual_host hdr_dom(Host) -i virtual.host

        # HTTP अनुरोध में PATH [/work] से शुरू होता है
        acl path_workdir path -m beg /work

        # HTTP अनुरोध में PATH में [test] शामिल है
        acl path_testdir path_sub -i test

        # HTTP अनुरोध में क्वेरी में [script] शामिल है
        acl query_script query -m sub script

        # स्रोत क्लाइंट आईपी पता [10.0.0.5/32] है
        acl src_ip src -m ip 10.0.0.5/32

        # प्रत्येक एसीएल के लिए कार्रवाई निर्धारित करें
        use_backend www_node01 if host_node01 || path_workdir
        use_backend www_node02 if host_node02 || path_testdir
        use_backend www_node03 if host_node03 || query_script
        use_backend www_default if host_virtual_host || src_ip
        default_backend www_default

backend www_node01
        server node01 10.0.0.51:80 check

backend www_node02
        server node02 10.0.0.52:80 check

backend www_node03
        server node03 10.0.0.53:80 check

backend www_default
        server www_default 10.0.0.31:80 check

root@dlp:~#
systemctl reload haproxy

[3] प्रत्येक मिलान पैटर्न के साथ फ्रंटएंड HAproxy सर्वर तक पहुंचने के लिए सामान्य रूप से काम करने की पुष्टि करें।
मिलान सामग्री