1. 程式人生 > >centos7.2 原始碼編譯安裝nginx,實現tcp反向代理,不中斷服務新增編譯模組

centos7.2 原始碼編譯安裝nginx,實現tcp反向代理,不中斷服務新增編譯模組

   我們很多時候,需要將區域網內伺服器叢集中的某臺機器的某個埠對映到外網,可以直接通過代理伺服器連線到區域網內的電腦,進行操作。而nginx除了能實現http的反向代理外和負載均衡外,還能實現tcp的反向代理,做資料庫的負載均衡。非常的方便簡介,平時還可以作為nat閘道器一樣來使用,棒棒的


   下面講一下如何實現nginx 的tcp反向代理,首先,直接用yum安裝的nginx,是預設不安裝tcp模組的,所以需要自己編譯nginx原始碼進行 安裝,從nginx 1.9版本開始,安裝包內就自帶了tcp模組,只需要在安裝的時候,宣告一下一起安裝就行了。


1 . 首先,下載nginx 。官網下載: http://nginx.org/en/download.html
wget http://nginx.org/download/nginx-1.12.1.tar.gz
yum -y install gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel        ## 安裝一些依賴包
tar -zxvf nginx-1.12.1.tar.gz       ## 解壓
mv nginx-1.12.1 /usr/local/          ## 放入/usr/local/目錄下,推薦,當然也可以是別的位置
cd nginx-1.12.1            ## 進入解壓後的檔案價
groupadd nginx                        ## 新增使用者組
useradd nginx -g nginx -s /sbin/nologin -M       ## 新增使用者名稱
./configure --with-stream --with-stream_ssl_module --with-http_stub_status_module --user=nginx --group=nginx         ## 加入tcp模組,https模組和狀態監控模組一起編譯(需要什麼模組根據自己的需求進行編譯),並指定使用者名稱,使用者組
make && make install     ## 編譯 安裝




編譯完後,在/usr/local/下會出現一個nginx資料夾,裡面sbin裡的nginx則為執行檔案。配置檔案為conf/nginx.conf 修改配置檔案,新增如下內容:
stream {                  ## stream模組,就跟http模組一樣
        server {             ## 裡面樂意有多個監聽服務,配置監聽埠和代理的ip和埠就可以進行tcp代理了。
          listen 12345;
          proxy_pass 192.168.1.2:3306;
        }
        server {
          listen 12346;
          proxy_pass 192.168.9.1.3:3306;
        }
        ## 在tcp請求代理中,也是可以使用負載均衡的upstream的
        upstream mysql{
            server 192.168.9.3:3306;
            server 192.168.9.4:3306;
        }
        server {
            listen 33333;
            proxy_pass myqsl;
        }
}

儲存退出,啟動nginx ,然後嘗試用連線 該ip的監聽埠,則顯示成功連線到資料庫。

到此。則可以正常訪問遠端區域網內的資料庫了。

然後,當你nginx已經正常使用中,由於新的需求常會 需要新增模組,按照下面方法,可以實現無縫新增模組,不需要關閉nginx,不中斷服務。無任何影響

## 首先,進入之前安裝nginx的原始碼目錄 
cd /usr/local/nginx-1.12.1         ## 我的目錄為這個
## 這裡隨意寫入你要新增的模組,可以寫任意多個,但是注意要包含已存在模組,避免正在使用的原服務出問題
./configure --with-stream --with-stream_ssl_module --with-http_stub_status_module --with-xxxxxx --with-xxxxx --user=nginx --group=nginx
make            ## 編譯

## 重點!很多網上博文說不要make install。其實不然,make install會自動將新編譯好的nginx執行程式替換原程式,且不會中斷服務,也不會刪除任何已存在的快取,日誌等
make install
## 然後進入nginx目錄,重啟一下nginx即可
cd /usr/local/nginx
killall nginx && sbin/nginx

## 檢視nginx模組,看看是否安裝上了
sbin/nginx -V

OK,就到這裡,有任何疑問或問題的,歡迎留言,看到就會回答