Nginx代理MySQL并限制IP訪問(wèn)怎么配置?詳細(xì)步驟解析
1、前言
在生產(chǎn)環(huán)境中,我們的應(yīng)用服務(wù)器、MySQL服務(wù)器等通常都部署在云服務(wù)器上。為了數(shù)據(jù)安全,MySQL服務(wù)器的端口一般不會(huì)對(duì)外開(kāi)放,因?yàn)橹苯颖┞对诠W(wǎng)會(huì)帶來(lái)很大的風(fēng)險(xiǎn)。然而,線上業(yè)務(wù)出現(xiàn)bug時(shí),開(kāi)發(fā)人員需要遠(yuǎn)程連接MySQL來(lái)查看數(shù)據(jù)。這時(shí),我們可以通過(guò)Nginx代理(俗稱“跳板機(jī)”)來(lái)實(shí)現(xiàn)安全連接。
2、Nginx代理連接
要實(shí)現(xiàn)對(duì)MySQL連接的代理轉(zhuǎn)發(fā),我們需要一臺(tái)安裝了Nginx的服務(wù)器,并且這臺(tái)服務(wù)器要與MySQL服務(wù)器處于一個(gè)內(nèi)網(wǎng)中,以便它們之間可以相互訪問(wèn)。此外,我們還需要用到ngx_stream_core_module模塊,該模塊不是默認(rèn)構(gòu)建的,需要在Nginx配置時(shí)添加--with-stream選項(xiàng)來(lái)進(jìn)行構(gòu)建。
2.1 指令介紹
1)stream
- 作用:定義stream服務(wù)器,與http塊平級(jí),定義在main塊中。
- 作用域:main
- 語(yǔ)法:
stream {...} - 示例:
stream {
# 配置內(nèi)容
}
2)server
- 作用:定義一個(gè)虛擬主機(jī),與http塊中的server類(lèi)似??梢栽趕tream塊中定義多個(gè)server塊。
- 作用域:stream
- 語(yǔ)法:
server {...} - 示例:
stream {
server {
# 配置內(nèi)容
}
}
3)listen
- 作用:定義虛擬主機(jī)server要監(jiān)聽(tīng)的socket的地址和端口。
- 作用域:server
- 語(yǔ)法:
listen address:port; - 示例:
stream {
server {
listen 127.0.0.1:3306;
# 其他配置
}
}
2.2 配置示例
假設(shè)我們的MySQL服務(wù)器IP為192.168.110.101,端口為3306。
單機(jī)環(huán)境配置
stream {
server {
listen 3306;
proxy_pass 192.168.110.101:3306;
}
}
集群環(huán)境配置(假設(shè)有多個(gè)MySQL實(shí)例)
這里只是一個(gè)示例,實(shí)際配置可能需要根據(jù)具體的負(fù)載均衡策略來(lái)調(diào)整。
stream {
upstream mysql_cluster {
server 192.168.110.101:3306;
server 192.168.110.102:3306;
# 更多服務(wù)器...
}
server {
listen 3306;
proxy_pass mysql_cluster;
}
}
配置完成后,我們就可以通過(guò)例如Navicat等客戶端連接到Nginx的3306端口,由Nginx代理連接到MySQL服務(wù)器。
3、限制訪問(wèn)IP
實(shí)現(xiàn)了連接代理后,任何人只要能訪問(wèn)Nginx就能連接MySQL服務(wù)器。為了更進(jìn)一步縮小訪問(wèn)范圍,保證數(shù)據(jù)安全,我們可以限制只有公司網(wǎng)絡(luò)的IP地址可以通過(guò)Nginx進(jìn)行連接。
Nginx提供了ngx_stream_access_module模塊,其指令非常簡(jiǎn)單,僅包含allow和deny指令。
3.1 指令介紹
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.0/16網(wǎng)段的IP訪問(wèn) allow 192.168.110.0/16; # 允許所有IP訪問(wèn) allow all;
2)deny
- 作用:設(shè)置指定的IP禁止訪問(wèn)??梢院?code>allow指令配合使用。
- 作用域:stream, server
- 語(yǔ)法:
deny address | CIDR | unix: | all; - 示例:
# 禁止192.168.110.1訪問(wèn) deny 192.168.110.1; # 禁止192.168.110.0/16網(wǎng)段的IP訪問(wèn) deny 192.168.110.0/16; # 禁止所有IP訪問(wèn) deny all;
3.2 配置示例
禁止所有的IP訪問(wèn),除192.168.110.100外。
stream {
allow 192.168.110.100;
deny all;
server {
listen 3306;
proxy_pass 192.168.110.101:3306;
}
}
Tips:如果指定了allow,一定要配合deny使用,否則就是允許所有的IP地址訪問(wèn)。
4、綜合案例
只允許192.168.110.100通過(guò)Nginx連接MySQL服務(wù)器。
Nginx配置
stream {
allow 192.168.110.100;
deny all;
server {
listen 3306;
proxy_pass 192.168.110.101:3306;
}
}
運(yùn)行結(jié)果
配置前:
- 從任意IP嘗試連接Nginx的3306端口,都能成功連接到MySQL服務(wù)器。
配置后:
- 只有從
192.168.110.100這個(gè)IP嘗試連接Nginx的3306端口時(shí),才能成功連接到MySQL服務(wù)器。 - 從其他IP嘗試連接時(shí),會(huì)被Nginx拒絕。
通過(guò)這樣的配置,我們可以有效地控制能夠訪問(wèn)MySQL服務(wù)器的IP范圍,從而提高數(shù)據(jù)的安全性。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解Keepalived+Nginx實(shí)現(xiàn)高可用(HA)
這篇文章主要介紹了詳解Keepalived+Nginx實(shí)現(xiàn)高可用(HA),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-06-06
Centos基于Nginx搭建RTMP服務(wù)器的實(shí)現(xiàn)
本文主要介紹了Centos基于Nginx搭建RTMP服務(wù)器的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-07-07
Nginx中roxy_set_header與add_header區(qū)別舉例淺析
proxy_set_header是一個(gè) Nginx 配置指令,用于設(shè)置將要轉(zhuǎn)發(fā)到后端服務(wù)器的 HTTP 請(qǐng)求頭,這篇文章主要給大家介紹了關(guān)于Nginx中roxy_set_header與add_header區(qū)別的相關(guān)資料,需要的朋友可以參考下2024-04-04
windows下快速安裝nginx并配置開(kāi)機(jī)自啟動(dòng)的方法
這篇文章主要介紹了windows下快速安裝nginx 并配置開(kāi)機(jī)自啟動(dòng)的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-05-05
nginx自定義變量與內(nèi)置預(yù)定義變量的使用
這篇文章主要介紹了nginx自定義變量與內(nèi)置預(yù)定義變量的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
nginx全局塊的user指令的實(shí)現(xiàn)示例
user用于配置運(yùn)行Nginx服務(wù)器的worker進(jìn)程的用戶和用戶組,本文主要介紹了nginx全局塊的user指令的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2024-07-07

