PS:受XX的影響,只能在家辦公。但公司內外網隔離,每次訪問公司內部網絡時都必須使用跳板機過去,但在編寫代碼時,本地無法訪問數據庫,所以必須使用代理來使我可以訪問進數據庫。
文章目錄
現在環境是這樣的,有一臺服務器, 和若干數據庫。我在家通過VPN能訪問公司內部的這臺CentOS的服務器(當然什麼系統不重要,重要的是我能訪問到公司的內網去),但不能訪問數據庫,但這臺CentOS服務器可以訪問其他數據庫,所以我在CentOS上做一個代理,使我可以在本地通過VPN就可以直接訪問數據庫。
我這個過程中,我使用的是nginx來做了一個反向代理,其過程如下:
一、準備nginx環境
安裝過程這個網上有很多教程,其實很簡單,就是去官網,首先下載nginx文件包,再上傳到服務器中,因爲nginx需要依賴與一些庫,所以先安裝一些庫,可以先不管,安裝中出問題了再說也行,需要安裝的話,大致有下面這些:
安裝make:
yum -y install gcc automake autoconf libtool make
安裝g++:
yum install gcc gcc-c++
Pcre
yum -y install pcre-devel
openssl
yum -y install openssl openssl-devel
差不多就這些,安裝過程中失敗的話 可以考慮一下是不是yum源(centos下)的問題,可以考慮替換源。
二、安裝nginx
nginx我們一般使用其來做負載均衡,在使用http通信協議應用中使用得較多,但數據庫不是走的這個協議,所以配置http模塊是沒有用的,所以我們需要使用到nginx的Stream模塊,這個也是安裝的關鍵。步驟如下:
1、解壓下載的nginx壓縮包,進去主目錄下,可以看到有這樣文件
2、配置nginx
在conf目錄下去, 可以看到有個nginx.cof文件,對其進行配置。
在配置文件的http同級目錄下加入如下, 我已mysql代理爲例子:
upstream mysql {
hash $remote_addr consistent;
server xxxx:3306 weight=5 max_fails=3 fail_timeout=30s;#數據庫環境的ip
}
server {
listen 3306;#公網機器監聽端口
proxy_connect_timeout 1s;
proxy_timeout 36000s;#注意這個,簡單的來說就是連接上以後session的保持時間,就是多長時間不活動下次要重新鏈接,>建議設大一點
proxy_pass mysql;
}
位置如下圖:
3、在目錄下安裝nginx,以及stream模塊
./configure --with-http_ssl_module --with-stream
make
驗證安裝是否成功:
/usr/local/nginx/sbin/nginx -V
帶有這個參數就可以了
4、啓動nginx
在nginx的根目錄下,可以看到有個objs文件夾,文件夾下有個nginx可執行文件,直接執行就行。
啓動過程中可能回報端口占用錯,如:
nginx: [emerg] bind() to 0.0.0.0:3306 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:3306 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:3306 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:3306 failed (98: Address already in use)…
使用netstat -ntpl 查看,然後幹掉即可。
三、補充
也可以使用這個來啓動:
systemctl start nginx```
停止nginx :
```powershell
nginx -s stop >>>>快速停止nginx
nginx -s quit >>>>完整有序的停止nginx
卸載nginx:刪除nginx文件即可:
rm -rf /usr/local/nginx
四、注意事項
== 注意,後面每次修改配置文件,需要添加端口的話,不是直接修改上面一開始修改的那個配置文件的。而是去修改安裝目錄下的 conf/nginx.conf 文件, 可以用==
whereis nginx
命令查看。
這個路徑在安裝完nginx後,即make命令後,是有日誌輸出了的