nginx四層轉發,訪問內網mysql數據庫


 nginx四層代理多用於端口代理,代理內網端口,用公網的服務器代理內網的如mysql 3306,ssh 22,redis 6607等,也即是常說的“跳板機

 

前言

目前很多的企業將業務轉移到雲上,如果數據庫服務器直接暴露在公網,存在被暴露的風險,雲服務器上的mysql 3306端口基本不對外開放

我們如果想通過外網直接訪問mysql

可以使用nginx端口轉發來實現

 步驟

一、未安裝nginx的情況下(可參考:https://blog.csdn.net/whowhowhoisimportant/article/details/107500692)

1、首先安裝nginx
./configure --prefix=/usr/local/nginx --with-stream && make && make install
這里必須要加上--with-stream ,四層轉發主要是通過這個模塊來實現的

2、這個配置要寫在http外。nginx.conf配置如下:

#mysql
stream {
    upstream mysql {
    server 2.2.2.2: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 -h1.1.1.1.1 -P3307
內網mysql服務器要先授權2.2.2.2的內網ip地址
1.1.1.1是nginx的外網ip

二、已經有安裝過nginx,並在使用想要再添加stream模塊

方案A:共用nginx
1、先使用nginx -V 查看之前的編譯參數
2、用之前的編譯參數加上--with-stream
./configure --prefix=/... --with-stream
3、然后執行 make
這里千萬不要執行make install
到這里,我們先備份之前的nginx啟動文件
cp /application/nginx/sbin/nginx(bak)
然后拷貝編譯目錄下的cp ./objs/nginx /application/nginx/sbin/nginx
這樣就添加上了,然后使用nginx -V查看

方案B:不同路徑再安裝一個nginx
1、需要注意編譯的時候要帶新nginx的安裝路徑,如:原來裝/usr/local/nginx。現在再裝一個:/home/nginx

2、編譯./configure --prefix=/home/nginx --with-stream && make && make install

3、如果安裝完沒報錯,在/home/nginx目錄下沒有生成sbin目錄,那么找到/home/nginx/objs/nginx這個就是可執行文件

4、最后,附上小編常用的命令

1 創建軟連接:ln -s /usr/local/nginx/objs/nginx /usr/bin/nginx
2 啟動:/usr/local/nginx/objs/nginx -c /usr/local/nginx/conf/nginx.conf
3 測試: /usr/local/nginx/objs/nginx -t
4 重啟:/usr/local/nginx/objs/nginx -s reload

原文鏈接:https://blog.csdn.net/whowhowhoisimportant/article/details/115352255


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM