1. 程式人生 > >Nginx快速應用及資料庫、Websocket長連線反向代理

Nginx快速應用及資料庫、Websocket長連線反向代理

1、下載安裝包

下載nginx:   http://nginx.org/download/nginx-1.10.3.tar.gz

下載openssl : http://www.openssl.org/source/openssl-fips-2.0.9.tar.gz

下載zlib    : http://zlib.net/zlib-1.2.11.tar.gz

下載pcre    : ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.38.tar.gz

(同步安裝包已一併打包)

如果沒有安裝c++編譯環境,還得安裝,通過yum install gcc-c++完成安裝

2、編譯安裝

安裝前請確認openssl zlib pcre是否安裝,若沒有,請按照以下順序進行安裝,否則nginx會因為無法找到依賴包而無法安裝

openssl :

[[email protected]] tar zxvf openssl-fips-2.0.9.tar.gz

[[email protected]] cd openssl-fips-2.0.9

[[email protected]] ./config && make && make install

pcre:

[[email protected]] tar zxvf pcre-8.3

8.tar.gz

[[email protected]] cd pcre-8.38

[[email protected]]  ./configure && make && make install

zlib:

[[email protected]]tar zxvf zlib-1.2.11.tar.gz

[[email protected]] cd zlib-1.2.11

[[email protected]]  ./configure && make && make install

nginx

[[email protected]]tar zxvf nginx-1.8.0.tar.gz

[[email protected]] cd nginx-1.8.0

[[email protected]]  ./configure && make && make install

3、啟動nginx

[[email protected]] /usr/local/nginx/sbin/nginx   (啟動)

[[email protected]] /usr/local/nginx/sbin/nginx s reload (重啟)

[[email protected]] /usr/local/nginx/sbin/nginx s stop (關閉)

4、錯誤解決

      1.[[email protected] lib]# error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory

原因   在RedHat 64位機器上nginx讀取的pcre檔案為/lib64/libpcre.so.1檔案,預設安裝pcre時libpcre.so檔案安裝在/usr/local/lib/目錄下,所以輸入/opt/nginx/sbin/nginx -V 找不到檔案路徑!!

            1.首先確定安裝了pcre.

            2.切換路徑: cd /usr/local/lib  執行   ln -s /usr/local/lib/libpcre.so.1

             3.root許可權下新增軟連結 /usr/local/lib/libpcre.so.1 到 /lib64/ :  ln -s /usr/local/lib/libpcre.so.1

2.

  檢查埠號衝突

  1. 檢查nginx是否已經啟動,其本身佔用該埠號
  2. 檢查是否有別的程式佔用該埠號
  3. 修改nginx的埠號 /usr/local/nginx/conf/nginx.conf

   注:[[email protected] ~]# netstat –apn   (檢查埠號使用情況)

5、確認是否啟動成功

開啟瀏覽器  輸入  192.168.1.168(ip地址):81(埠號) 顯示一下內容說明啟動成功

成功後頁面:

5、nginx相關配置

對 /usr/local/nginx/conf/nginx.conf 檔案進行編輯

1.配置埠號與訪問首頁

2.配置需要代理的ip地址

3.配置允許訪問的路徑

4. nginx.conf已與安裝包一併打包.可參考

6、長連線的反向代理

長連線反向代理一般用在一些特殊情況,比如資料庫在某些雲伺服器上,資料庫只能通過SSH通道來進行連線,也就是說只有某臺雲伺服器可以連這個資料庫,別的人想直接訪問資料庫是不行的,這個時候如果想在外網直接能訪問到雲伺服器內部資料庫,就需要在能訪問的那臺雲伺服器做反向代理,把自身的某個埠號,對映到資料庫的連線地址上面,這裡要注意一下nginx的版本,低版本的是不能建立長連線代理的,nginx版本至少1.9的版本,版本太低沒有stream這個功能

stream模組預設沒有編譯到nginx, 編譯nginx時候 ./configure –with-stream 即可

主要用的是stream的配置:

比如我在nginx的配置檔案引入了另外一個配置檔案

看一下這個配置檔案:

打了馬賽克部分的是IP地址和埠號,表示你下方監聽的埠號要對映到哪個IP及埠 ,示例:192.168.1.123:3306

提供一份文字格式的

stream {
    upstream cloudsocket {
        hash $remote_addr consistent;
        # $binary_remote_addr;
        server 192.168.1.167:3306 weight=5 max_fails=30 fail_timeout=360s;
    }
    upstream redissocket {
        hash $remote_addr consistent;
        # $binary_remote_addr;
        server 192.168.1.167:6379 weight=5 max_fails=30 fail_timeout=360s;
    }
    server {
        listen 84;#資料庫伺服器監聽埠
        proxy_connect_timeout 36000s;
        proxy_timeout 36000s;#設定客戶端和代理服務之間的超時時間,如果5分鐘內沒操作將自動斷開。
        proxy_pass cloudsocket;
    }
    server {
        listen 81;#資料庫伺服器監聽埠
        proxy_connect_timeout 36000s;
        proxy_timeout 36000s;#設定客戶端和代理服務之間的超時時間,如果5分鐘內沒操作將自動斷開。
        proxy_pass redissocket;
    }
}

意思就是監聽本伺服器84埠, 如果有連線,則反向代理到192.168.1.167:3306;

監聽本伺服器的81埠,如果有連線,則反向代理到192.168.1.167:6379;

OK 重啟nginx  ......................

這樣子就搞定啦~~~~~~

皮皮皮,就是皮~~~~~~~~~~~~~~~~~~~