1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        Nginx 代理 MySQL 連接,并限制可訪問IP

        共 4201字,需瀏覽 9分鐘

         ·

        2023-08-31 08:16


                   

        鏈接:https://www.toutiao.com/article/7234104886726705716

        1.前言

        我們的生產(chǎn)環(huán)境基本上都部署在云服務(wù)器上,例如應(yīng)用服務(wù)器、MySQL服務(wù)器等。如果MySQL服務(wù)器直接暴露在公網(wǎng),就會存在很大的風險,為了保證數(shù)據(jù)安全,MySQL服務(wù)器的端口是不對外開放的。

        好巧不巧,線上業(yè)務(wù)遇到bug了,開發(fā)的小伙伴需要遠程連接MySQL來查看數(shù)據(jù),那應(yīng)該怎么辦呢?

        我們可以通過Nginx代理(“跳板機”)來進行連接。

        2.Nginx代理連接

        要實現(xiàn)對連接的代理轉(zhuǎn)發(fā),我們需要一臺服務(wù)器并安裝Nginx,且與MySQL服務(wù)器處于一個內(nèi)網(wǎng)之中,內(nèi)網(wǎng)之間可以訪問。

        其次,我們需要用到ngx_stream_core_module模塊,該模塊不是默認構(gòu)建的,我們需要在configure時添加--with-stream來進行構(gòu)建。

        既然要用到ngx_stream_core_module模塊,先看看其提供的指令,我們才知道怎么來進行配置。

        1)stream

        該指令定義了stream服務(wù)器。與http塊平級,定義在main塊中。

        • 作用域:main
        • 語法:stream {...}

        示例:

         stream {
             server {
                 ......
             }
         }

        2)server

        該指令定義一個虛擬主機,與http塊中的server類似。我們可以在stream塊中定義多個server塊。

        • 作用域:stream
        • 語法:server {...}
        stream {
             server {
                 ......
             }
             server {
                 ......
             }
         }

        3)listen

        該指令定義虛擬主機server要監(jiān)聽的socket的地址和端口。

        • 作用域:server
        • 語法:listen address:port;

        示例:

        listen 127.0.0.1:3306;
         listen *:3306;
         # 效果與listen *:3306一樣
         listen 3306;
         listen localhost:3306;

        4)配置示例

        MySQL服務(wù)器,端口3306(單機環(huán)境)

        stream  {
             server {
                 listen 3306;
                 proxy_pass 192.168.110.101:3306;
             }
         }

        MySQL服務(wù)器,端口3306(集群環(huán)境)

        stream  {
             upstream mysql_socket {
                 server 192.168.110.101:3306;
             }
             server {
                     listen 3306;
                     proxy_pass mysql_socket;
             }
         }

        此時,我們就可以通過例如Navicat等客戶端進行連接。

        3.限制訪問IP

        實現(xiàn)了對連接的代理,所有人都可以通過訪問Nginx來連接MySQL服務(wù)器,解決了外網(wǎng)無法連接的問題。

        為了更進一步的縮小訪問范圍,保證數(shù)據(jù)安全,我們可以限制只有公司網(wǎng)絡(luò)的IP地址可以通過Nginx進行連接。

        Nginx提供了ngx_stream_access_module模塊,其指令非常簡單,僅包含allow和deny指令。

        1)allow

        該指令設(shè)置指定的IP允許訪問??梢院蚫eny指令配合使用

        • 作用域:stream, server
        • 語法:allow address | CIDR | unix: | all;

        示例:

         # 允許192.168.110.1訪問
         allow 192.168.110.1;
         
         # 允許192.168.110.1192.168.255.254
         allow 192.168.110.0/16;
         
         # 允許192.168.110.1192.168.110.254
         allow 192.168.110.0/24;
         
         # 允許所有的IP訪問
         allow all;

        2)deny

        該指令設(shè)置指定的IP禁止訪問??梢院蚢llow指令配合使用。

        • 作用域:stream, server
        • 語法:deny address | CIDR | unix: | all;
        # 禁止192.168.110.1訪問
         deny 192.168.110.1;
         
         # 禁止192.168.110.1192.168.255.254
         deny 192.168.110.0/16;
         
         # 禁止192.168.110.1192.168.110.254
         deny 192.168.110.0/24;
         
         # 禁止所有的IP訪問
         deny all;

        3)配置示例

        禁止所有的IP訪問,192.168.110.100除外。

        allow 192.168.110.100;
         deny all;

        Tips:如果指定了allow,需要配合deny使用,否則就是允許所有的IP地址訪問。

        4.綜合案例

        只允許192.168.110.100通過Nginx連接MySQL服務(wù)器。

        stream  {
             allow 192.168.110.100;
             deny all;
             server {
                 listen 3306;
                 proxy_pass 192.168.110.101:3306;
             }
         }


        最近很多小伙伴找我要一些程序員必備資料,于是我翻出了壓箱底的寶藏,免費分享給大家!


        掃描海報二維碼免費獲取。


        瀏覽 1441
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            国产农村妇女露脸对白视频 | 美国a级大片 | 北条麻妃九九九精品高清在线 | 人外怪物高h重口慎点bl 公交车上摸少妇丰满日本 中国毛片网站 | 被cao| 想要xx在线 | 久久国产乱子伦精品一区二区 | 做爱性高潮免费网站 | 黄片免费小视频 | 精品一区二区三区麻豆 |