現在很多的企業將業務轉移到雲上,如果數據庫服務器直接暴露在公網,存在被***的風險,雲服務器上的mysql 3306端口基本不對外開放。我們如果想通過外網直接訪問mysql怎麼做呢,這裏我們可以使用nginx端口轉發來實現。
1:首先安裝nginx
./configure --prefix=/application/nginx --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --with-stream && make && make install
這裏必須要加上--with-stream ,四層轉發主要是通過這個模塊來實現的
2:修改nginx的配置文件
stream {
upstream mysql {
server 172.16.1.202:3306 weight=1 max_fails=3 fail_timeout=10s;
}
server {
listen 3307;
proxy_pass mysql;
proxy_timeout=600s;
proxy_connect_timeout=30s;
}
}
需要注意的是這個配置要寫在http外邊
3:重啓nginx
4:檢查3307端口是否已經起來
5:連接mysql
mysql -uroot -p123456 -h10.0.0.199 -P3307
內網mysql服務器要先授權10.0.0.199的內網ip地址
10.0.0.199 是nginx的外網ip
如果已經安裝了nginx,想要再添加stream模塊
我們先使用nginx -V 查看之前的編譯參數
然後用之前的編譯參數加上--with-stream
./configure --prefix=/application/nginx --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --with-stream
然後執行 make
這裏千萬不要執行make install
到這裏,我們先備份之前的nginx啓動文件
cp /application/nginx/sbin/nginx(,.bak)
然後拷貝編譯目錄下的cp ./objs/nginx /application/nginx/sbin/nginx
這樣就添加上了,然後使用nginx -V查看