使用Nginx代理MySQL連接并限制可訪問(wèn)IP配置
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ì)外開(kāi)放的。
好巧不巧,線上業(yè)務(wù)遇到bug了,開(kāi)發(fā)的小伙伴需要遠(yuǎn)程連接MySQL來(lái)查看數(shù)據(jù),那應(yīng)該怎么辦呢?
我們可以通過(guò)Nginx代理(“跳板機(jī)”)來(lái)進(jìn)行連接。
推薦一個(gè)開(kāi)源免費(fèi)的 Spring Boot 實(shí)戰(zhàn)項(xiàng)目:
https://github.com/javastacks/spring-boot-best-practice
2.Nginx代理連接
要實(shí)現(xiàn)對(duì)連接的代理轉(zhuǎn)發(fā),我們需要一臺(tái)服務(wù)器并安裝Nginx,且與MySQL服務(wù)器處于一個(gè)內(nèi)網(wǎng)之中,內(nèi)網(wǎng)之間可以訪問(wèn)。
其次,我們需要用到ngx_stream_core_module模塊,該模塊不是默認(rèn)構(gòu)建的,我們需要在configure時(shí)添加--with-stream來(lái)進(jìn)行構(gòu)建。
添加過(guò)程可以參照【Nginx基本命令&不停機(jī)版本升級(jí)】一文進(jìn)行,我們這里不再贅述。
既然要用到ngx_stream_core_module模塊,首當(dāng)其沖,是看看其提供的指令,我們才知道怎么來(lái)進(jìn)行配置。
1)stream
該指令定義了stream服務(wù)器。與http塊平級(jí),定義在main塊中。
- 作用域:main
- 語(yǔ)法:stream {...}
示例:
stream {
server {
......
}
}2)server
該指令定義一個(gè)虛擬主機(jī),與http塊中的server類似。我們可以在stream塊中定義多個(gè)server塊。
- 作用域:stream
- 語(yǔ)法:server {...}
stream {
server {
......
}
server {
......
}
}3)listen
該指令定義虛擬主機(jī)server要監(jiān)聽(tīng)的socket的地址和端口。
- 作用域:server
- 語(yǔ)法:listen address:port;
示例:
listen 127.0.0.1:3306; listen *:3306; # 效果與listen *:3306一樣 listen 3306; listen localhost:3306;
4)配置示例
MySQL服務(wù)器,端口3306(單機(jī)環(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;
}
}此時(shí),我們就可以通過(guò)例如Navicat等客戶端進(jìn)行連接。
3.限制訪問(wèn)IP
實(shí)現(xiàn)了對(duì)連接的代理,所有人都可以通過(guò)訪問(wèn)Nginx來(lái)連接MySQL服務(wù)器,解決了外網(wǎng)無(wú)法連接的問(wèn)題。
為了更進(jìn)一步的縮小訪問(wèn)范圍,保證數(shù)據(jù)安全,我們可以限制只有公司網(wǎng)絡(luò)的IP地址可以通過(guò)Nginx進(jìn)行連接。
Nginx提供了ngx_stream_access_module模塊,其指令非常簡(jiǎn)單,僅包含allow和deny指令。
1)allow
該指令設(shè)置指定的IP允許訪問(wèn)。可以和deny指令配合使用
- 作用域:stream, server
- 語(yǔ)法:allow address | CIDR | unix: | all;
示例:
# 允許192.168.110.1訪問(wèn) allow 192.168.110.1; # 允許192.168.110.1到192.168.255.254 allow 192.168.110.0/16; # 允許192.168.110.1到192.168.110.254 allow 192.168.110.0/24; # 允許所有的IP訪問(wèn) allow all;
2)deny
該指令設(shè)置指定的IP禁止訪問(wèn)??梢院蚢llow指令配合使用。
- 作用域:stream, server
- 語(yǔ)法:deny address | CIDR | unix: | all;
# 禁止192.168.110.1訪問(wèn) deny 192.168.110.1; # 禁止192.168.110.1到192.168.255.254 deny 192.168.110.0/16; # 禁止192.168.110.1到192.168.110.254 deny 192.168.110.0/24; # 禁止所有的IP訪問(wèn) deny all;
3)配置示例
禁止所有的IP訪問(wèn),192.168.110.100除外。
allow 192.168.110.100; deny all;
Tips:如果指定了allow,需要配合deny使用,否則就是允許所有的IP地址訪問(wèn)。
4.綜合案例
只允許192.168.110.100通過(guò)Nginx連接MySQL服務(wù)器。
stream {
allow 192.168.110.100;
deny all;
server {
listen 3306;
proxy_pass 192.168.110.101:3306;
}
}以上就是使用Nginx代理MySQL連接并限制可訪問(wèn)IP的詳細(xì)內(nèi)容,更多關(guān)于Nginx代理MySQL連接的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
基于Nginx+lua實(shí)現(xiàn)簡(jiǎn)單的XSS攻擊攔截
WAF即web應(yīng)用防火墻,Nginx是一個(gè)主流的代理服務(wù),除了本身的Nginx日志,作為用戶肯定也支持對(duì)請(qǐng)求信息進(jìn)行操作,?很多都是通過(guò)在代理服務(wù)器上掛載規(guī)則特征,實(shí)現(xiàn)軟件層面的軟WAF進(jìn)行WEB防護(hù),本文主要給大家介紹了Nginx+Lua實(shí)現(xiàn)一個(gè)簡(jiǎn)單的XSS攻擊攔截,需要的朋友可以參考下2024-01-01
nginx lua集成kafka的實(shí)現(xiàn)方法
這篇文章主要介紹了nginx lua集成kafka的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
Nginx服務(wù)器中414錯(cuò)誤和504錯(cuò)誤的配置解決方法
這篇文章主要介紹了Nginx服務(wù)器中414錯(cuò)誤和504錯(cuò)誤的配置解決方法,分別對(duì)應(yīng)Request-URI Too Large和Gateway Time-out這樣的錯(cuò)誤提示,需要的朋友可以參考下2015-12-12
啟動(dòng)Nginx.exe出現(xiàn)閃退問(wèn)題的解決方案
在做項(xiàng)目時(shí),使用老師給的代碼,點(diǎn)擊Nginx.exe出現(xiàn)閃退的情況,出現(xiàn)這個(gè)問(wèn)題可能出現(xiàn)的情況,端口號(hào)被占用或者logs下文件路徑有問(wèn)題,所以本文小編給大家介紹了啟動(dòng)Nginx.exe出現(xiàn)閃退問(wèn)題的解決方案,需要的朋友可以參考下2024-03-03
利用Nginx實(shí)現(xiàn)一個(gè)IP部署多個(gè)網(wǎng)站
文章主要介紹了如何在一個(gè)服務(wù)器/一個(gè)IP地址上部署多個(gè)網(wǎng)站虛擬主機(jī)的方法,主要包括基于域名、端口和IP地址的區(qū)分方式,并詳細(xì)描述了Nginx的虛擬主機(jī)配置結(jié)構(gòu)和匹配優(yōu)先,此外,文章還提供了完整的多站點(diǎn)部署示例、限制方案以及管理命令速查,需要的朋友可以參考下2026-05-05
nginx的FastDFS分布式存儲(chǔ)模塊測(cè)試方法
很長(zhǎng)時(shí)間沒(méi)有關(guān)注FastDFS了,第一次使用FastDFS 是在 08年的時(shí)候11月的時(shí)候,那個(gè)時(shí)候是為了解決公司的數(shù)據(jù)存儲(chǔ)~那時(shí)候可能是對(duì)Fastdfs了解不深,功能還不算太健全,最后選擇了lustre。2010-12-12

