1.前言
我們的生產環境基本上都部署在云服務器上,例如應用服務器、MySQL服務器等。如果MySQL服務器直接暴露在公網,就會存在很大的風險,為了保證數據安全,MySQL服務器的端口是不對外開放的。
好巧不巧,線上業務遇到bug了,開發的小伙伴需要遠程連接MySQL來查看數據,那應該怎么辦呢?
我們可以通過Nginx代理(“跳板機”)來進行連接。
2.Nginx代理連接
要實現對連接的代理轉發,我們需要一臺服務器并安裝Nginx,且與MySQL服務器處于一個內網之中,內網之間可以訪問。
其次,我們需要用到ngx_stream_core_module模塊,該模塊不是默認構建的,我們需要在configure時添加--with-stream來進行構建。
既然要用到ngx_stream_core_module模塊,先看看其提供的指令,我們才知道怎么來進行配置。
1)stream
該指令定義了stream服務器。與http塊平級,定義在main塊中。
作用域:main
語法:stream {...}
示例:
stream{ server{ ...... } }
2)server
該指令定義一個虛擬主機,與http塊中的server類似。我們可以在stream塊中定義多個server塊。
作用域:stream
語法:server {...}
stream{ server{ ...... } server{ ...... } }
3)listen
該指令定義虛擬主機server要監聽的socket的地址和端口。
作用域:server
語法:listen address:port;
示例:
listen127.0.0.1:3306; listen*:3306; #效果與listen*:3306一樣 listen3306; listenlocalhost:3306;
4)配置示例
MySQL服務器,端口3306(單機環境)
stream{ server{ listen3306; proxy_pass192.168.110.101:3306; } }
MySQL服務器,端口3306(集群環境)
stream{ upstreammysql_socket{ server192.168.110.101:3306; } server{ listen3306; proxy_passmysql_socket; } }
此時,我們就可以通過例如Navicat等客戶端進行連接。
3.限制訪問IP
實現了對連接的代理,所有人都可以通過訪問Nginx來連接MySQL服務器,解決了外網無法連接的問題。
為了更進一步的縮小訪問范圍,保證數據安全,我們可以限制只有公司網絡的IP地址可以通過Nginx進行連接。
Nginx提供了ngx_stream_access_module模塊,其指令非常簡單,僅包含allow和deny指令。
1)allow
該指令設置指定的IP允許訪問。可以和deny指令配合使用
作用域: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
該指令設置指定的IP禁止訪問??梢院蚢llow指令配合使用。
作用域: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服務器。
stream{ allow192.168.110.100; denyall; server{ listen3306; proxy_pass192.168.110.101:3306; } }
審核編輯:湯梓紅
-
服務器
+關注
關注
12文章
9017瀏覽量
85182 -
HTTP
+關注
關注
0文章
501瀏覽量
31056 -
虛擬主機
+關注
關注
0文章
69瀏覽量
11428 -
MySQL
+關注
關注
1文章
801瀏覽量
26441 -
nginx
+關注
關注
0文章
143瀏覽量
12163
原文標題:Nginx 代理 MySQL 連接,并限制可訪問IP
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論