Fedora 38
Sponsored Link

Nginx : Stream मॉड्यूल का उपयोग करें2023/10/17

 
Stream मॉड्यूल का उपयोग करने के लिए Nginx को कॉन्फ़िगर करें।
टीसीपी, यूडीपी (1.9.13 या बाद का संस्करण), यूनिक्स-डोमेन सॉकेट अनुरोधों को प्रॉक्सी करना संभव है।
यह उदाहरण पर्यावरण पर आधारित है जैसे बैकएंड सर्वर के लिए प्रॉक्सी MariaDB अनुरोधों का अनुसरण करता है।
-----------+---------------------------+-----
           |                           |
           |10.0.0.31                  |
+----------+-----------+               |
|   [ www.srv.world ]  |               |
|        Nginx         |               |
+----------------------+               |
                                       |
------------+--------------------------+-----------
            |                          |           
            |10.0.0.51                 |10.0.0.52  
+-----------+----------+   +-----------+----------+
| [ node01.srv.world ] |   | [ node02.srv.world ] |
|       Mariadb#1      |   |       Mariadb#2      |
+----------------------+   +----------------------+

[1] Nginx कॉन्फ़िगर करें।
[root@www ~]#
dnf -y install nginx-mod-stream
[root@www ~]#
vi /etc/nginx/nginx.conf
# अंत में जोड़ें
# [weight=*] का अर्थ है वजन संतुलित करना

stream {
    upstream mariadb-backend {
        server 10.0.0.51:3306 weight=2;
        server 10.0.0.52:3306;
    }
    server {
        listen 3306;
        proxy_pass mariadb-backend;
    }
}

[root@www ~]#
systemctl reload nginx

[2] यदि SELinux सक्षम है, तो नीति बदलें।
[root@www ~]#
setsebool -P httpd_can_network_connect on

[root@www ~]#
setsebool -P httpd_can_network_connect_db on

[root@www ~]#
vi nginx-stream.te
# नया निर्माण

module nginx-stream 1.0;

require {
        type mysqld_port_t;
        type httpd_t;
        class tcp_socket name_bind;
}

#============= httpd_t ==============
allow httpd_t mysqld_port_t:tcp_socket name_bind;

[root@www ~]#
checkmodule -m -M -o nginx-stream.mod nginx-stream.te

[root@www ~]#
semodule_package --outfile nginx-stream.pp --module nginx-stream.mod

[root@www ~]#
semodule -i nginx-stream.pp

[3] सत्यापित करें कि यह किसी भी क्लाइंट कंप्यूटर से फ्रंटएंड Nginx सर्वर तक पहुंचने के लिए ठीक काम करता है।
[cent@client ~]$ mysql -u serverworld -ppassword -h www.srv.world -e "show variables like 'hostname';"
+---------------+------------------+
| Variable_name | Value            |
+---------------+------------------+
| hostname      | node01.srv.world |
+---------------+------------------+
[cent@client ~]$ mysql -u serverworld -ppassword -h www.srv.world -e "show variables like 'hostname';"
+---------------+------------------+
| Variable_name | Value            |
+---------------+------------------+
| hostname      | node01.srv.world |
+---------------+------------------+
[cent@client ~]$ mysql -u serverworld -ppassword -h www.srv.world -e "show variables like 'hostname';"
+---------------+------------------+
| Variable_name | Value            |
+---------------+------------------+
| hostname      | node02.srv.world |
+---------------+------------------+
[cent@client ~]$ mysql -u serverworld -ppassword -h www.srv.world -e "show variables like 'hostname';"
+---------------+------------------+
| Variable_name | Value            |
+---------------+------------------+
| hostname      | node01.srv.world |
+---------------+------------------+
मिलान सामग्री