0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何用Nginx代理MySQL連接并限制可訪問IP

馬哥Linux運(yùn)維 ? 來源:頭條號(hào)fkjavaer ? 2023-08-15 11:12 ? 次閱讀

1.前言

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

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

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

2.Nginx代理連接

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

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

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

1)stream

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

作用域:main

語法:stream {...}

示例:

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

2)server

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

作用域:stream

語法:server {...}

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

3)listen

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

作用域:server

語法:listen address:port;

示例:

listen127.0.0.1:3306;
listen*:3306;
#效果與listen*:3306一樣
listen3306;
listenlocalhost:3306;

4)配置示例

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

stream{
server{
listen3306;
proxy_pass192.168.110.101:3306;
}
}

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

stream{
upstreammysql_socket{
server192.168.110.101:3306;
}
server{
listen3306;
proxy_passmysql_socket;
}
}

此時(shí),我們就可以通過例如Navicat等客戶端進(jìn)行連接。

3.限制訪問IP

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

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

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

1)allow

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

作用域:stream, server

語法:allow address | CIDR | unix: | all;

示例:

#允許192.168.110.1訪問
allow192.168.110.1;

#允許192.168.110.1到192.168.255.254
allow192.168.110.0/16;

#允許192.168.110.1到192.168.110.254
allow192.168.110.0/24;

#允許所有的IP訪問
allowall;

2)deny

該指令設(shè)置指定的IP禁止訪問。可以和allow指令配合使用。

作用域:stream, server

語法:deny address | CIDR | unix: | all;

#禁止192.168.110.1訪問
deny192.168.110.1;

#禁止192.168.110.1到192.168.255.254
deny192.168.110.0/16;

#禁止192.168.110.1到192.168.110.254
deny192.168.110.0/24;

#禁止所有的IP訪問
denyall;

3)配置示例

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

allow192.168.110.100;
denyall;

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

4.綜合案例

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

stream{
allow192.168.110.100;
denyall;
server{
listen3306;
proxy_pass192.168.110.101:3306;
}
}

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    8849

    瀏覽量

    84954
  • HTTP
    +關(guān)注

    關(guān)注

    0

    文章

    496

    瀏覽量

    30894
  • 虛擬主機(jī)
    +關(guān)注

    關(guān)注

    0

    文章

    66

    瀏覽量

    11411
  • MySQL
    +關(guān)注

    關(guān)注

    1

    文章

    793

    瀏覽量

    26353
  • nginx
    +關(guān)注

    關(guān)注

    0

    文章

    141

    瀏覽量

    12146

原文標(biāo)題:Nginx 代理 MySQL 連接,并限制可訪問IP

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    本地LabVIEW訪問遠(yuǎn)程mysql

    SQL SERVER我也嘗試過,在連接字符串中寫入遠(yuǎn)程訪問對(duì)象的IP就可以??墒?b class='flag-5'>MYSQL這個(gè)數(shù)據(jù)庫(kù)沒用過,更沒用LabVIEW對(duì)其進(jìn)行過訪問
    發(fā)表于 12-15 14:38

    【NanoPi NEO試用體驗(yàn)】之安裝配置Nginx環(huán)境WEB網(wǎng)站詳解

    本帖最后由 Q69693721 于 2016-10-18 13:54 編輯 LNMP(Linux+Nginx+Mysql+PHP)相信學(xué)過計(jì)算機(jī)編程和網(wǎng)站的人應(yīng)該都知道他一直是Linux環(huán)境下
    發(fā)表于 10-18 12:25

    NanoPi NEO - 可靠的Nginx 網(wǎng)絡(luò)服務(wù)器

    服務(wù)器部署,刪除匿名用戶和測(cè)試數(shù)據(jù)庫(kù)。#mysql_secure_installation根據(jù)提示進(jìn)行選擇:3. 安裝nginx如果你之前已經(jīng)安裝了Apache2,則需要先移除apache2
    發(fā)表于 06-20 15:43

    采用Nginx的反向代理解決跨域

    40Nginx的反向代理功能解決跨域問題
    發(fā)表于 10-10 10:58

    看看nginx連接頻率limit_conn_module和請(qǐng)求頻率limit_req_module限制模塊

    影響業(yè)務(wù)正常運(yùn)行。往往辦法是限制對(duì)同一個(gè)IP連接數(shù)和并發(fā)數(shù)進(jìn)行限制。今天我們就來看看nginx連接
    發(fā)表于 10-19 14:20

    使用代理IP還能查到真實(shí)IP

    。? ??一、代理分為透明代理與匿名代理? ? 1.透明代理? ? 仍然會(huì)發(fā)送你的真實(shí)IP,這種代理
    發(fā)表于 12-19 15:32 ?6612次閱讀

    高匿ip代理工具具備什么功能?

    的安全系數(shù)。高匿ip代理主要的功能有有以下這些:1. 突破封鎖:一般情況下很多網(wǎng)站會(huì)被限制訪問,這是一種認(rèn)為的限制,并且不同的服務(wù)器對(duì)
    發(fā)表于 01-05 18:06 ?636次閱讀

    如何徹底搞懂Nginx知識(shí)網(wǎng)結(jié)構(gòu)

    ,性能是其最重要的要求,十分注重效率,有報(bào)告nginx能支持高達(dá)50000個(gè)并發(fā)連接數(shù) 1.1反向代理 正向代理 正向代理:局域網(wǎng)中的電腦用
    的頭像 發(fā)表于 05-03 14:15 ?1608次閱讀
    如何徹底搞懂<b class='flag-5'>Nginx</b>知識(shí)網(wǎng)結(jié)構(gòu)

    配置Nginx訪問日志

    每當(dāng)處理客戶請(qǐng)求時(shí),Nginx都會(huì)在訪問日志中生成一個(gè)新記錄。每個(gè)事件記錄都包含一個(gè)時(shí)間戳,包含有關(guān)客戶端和所請(qǐng)求資源的各種信息。訪問日志可以顯示
    的頭像 發(fā)表于 05-24 09:59 ?2253次閱讀

    linux是如何設(shè)置nginxmysql開機(jī)自啟動(dòng)?

    有很多小伙伴都沒有一個(gè)統(tǒng)一的設(shè)置nginxmysql開機(jī)自啟動(dòng)的方式,今天我就將我的統(tǒng)一開機(jī)自啟動(dòng)格式分享給大家
    的頭像 發(fā)表于 01-20 10:25 ?1571次閱讀

    如何提高Mysql數(shù)據(jù)庫(kù)的訪問瓶頸

    為了提高Mysql數(shù)據(jù)庫(kù)的訪問瓶頸,常用的方法有如下兩個(gè): 在服務(wù)器端增加緩存服務(wù)器緩存常用的數(shù)據(jù)(例如redis) 增加連接池,來提高MYsql Server的
    的頭像 發(fā)表于 11-08 16:22 ?977次閱讀
    如何提高<b class='flag-5'>Mysql</b>數(shù)據(jù)庫(kù)的<b class='flag-5'>訪問</b>瓶頸

    Nginx目錄結(jié)構(gòu)有哪些

    什么是NginxNginx是一個(gè) 輕量級(jí)/高性能的反向代理Web服務(wù)器,他實(shí)現(xiàn)非常高效的反向代理、負(fù)載平衡,他可以處理2-3萬并發(fā)連接數(shù)
    的頭像 發(fā)表于 11-11 11:27 ?567次閱讀
    <b class='flag-5'>Nginx</b>目錄結(jié)構(gòu)有哪些

    nginx使用學(xué)習(xí)之正、反向代理

    Nginx 不僅可以做反向代理,實(shí)現(xiàn)負(fù)載均衡。還能用作正向代理來進(jìn)行上網(wǎng)等功能。正向代理:如果把局域網(wǎng)外的 Internet 想象成一個(gè)巨大的資源庫(kù),則局域網(wǎng)中的客戶端要訪 問 Int
    的頭像 發(fā)表于 11-13 10:54 ?957次閱讀
    <b class='flag-5'>nginx</b>使用學(xué)習(xí)之正、反向<b class='flag-5'>代理</b>

    Nginx的配置文件如何設(shè)置頭信息保留真實(shí)IP不丟失

    Nginx 配置中設(shè)置頭信息以保留客戶端的真實(shí) IP 地址通常是在使用反向代理的場(chǎng)景中需要的。當(dāng) Nginx 作為反向代理時(shí),客戶端的真
    的頭像 發(fā)表于 11-30 10:54 ?1701次閱讀

    如何通過Nginx實(shí)現(xiàn)禁止國(guó)外IP訪問網(wǎng)站

    最近不少小伙伴反饋?zhàn)约壕S護(hù)的項(xiàng)目中,經(jīng)常在后臺(tái)可以看到來自國(guó)外IP的攻擊,令人頭疼。今天浩道跟大家分享如何通過Nginx來實(shí)現(xiàn)禁止國(guó)外IP訪問網(wǎng)站,確保你網(wǎng)站免遭國(guó)外
    的頭像 發(fā)表于 12-01 11:12 ?1338次閱讀
    如何通過<b class='flag-5'>Nginx</b>實(shí)現(xiàn)禁止國(guó)外<b class='flag-5'>IP</b><b class='flag-5'>訪問</b>網(wǎng)站