天天看點

Linux nginx部署級常用配置下載下傳預編譯環境安裝操作指令nginx配置詳解多tomcat 80端口共享配置nginx實作負載均衡

下載下傳

  1. nginx

    下載下傳位址:http://nginx.org/en/download.html

    穩定版本:1.12.2

  2. zlib

    下載下傳位址:https://sourceforge.net/projects/libpng/files/zlib/

    gzip子產品需zlib庫

  3. pcre

    下載下傳位址:https://sourceforge.net/projects/pcre/files/pcre/

    rewrite子產品需pcre庫

  4. openssl

    下載下傳位址:https://www.openssl.org/source/openssl-1.0.2n.tar.gz

    ssl功能需openssl庫

    指定這個版本1.0.2n,因為下載下傳了最新版本安裝時報錯

預編譯環境

  1. 安裝make:

    yum -y install gcc automake autoconf libtool make

  2. 安裝g++:

    yum install gcc gcc-c++

安裝

  • 安裝zlib
cd /usr/local/src
​tar -zxvf /usr/local/setup/nginx/zlib-.tar.gz 
cd zlib-​
./configure
make
make install​​​
           
  • 安裝pcre
cd /usr/local/src
tar -zxvf /usr/local/setup/nginx/pcre-.tar.gz
cd pcre-​
./configure
make
make install​​​​
           
  • 安裝openssl
cd /usr/local/src
tar -zxvf /usr/local/setup/nginx/openssl-n.tar.gz​
cd ​openssl-n
./config
make
make install​​​
           
  • 安裝nginx
cd /usr/local/src
tar -zxvf /usr/local/setup/nginx/nginx-.tar.gz
cd ​​​nginx-
​
======在./configure時注意修改zlib、pcre、openssl版本号:​
./configure --prefix=/usr/local/nginx --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_ssl_module --with-pcre=/usr/local/src/pcre- --with-zlib=/usr/local/src/zlib- --with-openssl=/usr/local/src/openssl-n
​
make
make install​​
           

操作指令

啟動

/usr/local/nginx/nginx

檢查配置

/usr/local/nginx/nginx -t

平滑重新開機(修改配置檔案後,可使用此指令重新開機,不影響運作) /usr/local/nginx/nginx -s reload

結束nginx(待nginx程序執行任務完畢後退出)

/usr/local/nginx/nginx -s quit

直接退出nignx

/usr/local/nginx/nginx -s stop

nginx配置詳解

參考:

https://blog.csdn.net/denghonghao/article/details/79620454

https://blog.csdn.net/yougoule/article/details/78186138​

http://www.runoob.com/linux/nginx-install-setup.html​

多tomcat 80端口共享配置

nginx.conf配置資訊如下:
​server {
        listen  ;
        server_name     a1.xxx.com;
        location / {
            proxy_pass http://a1.host:/;
        }
    }
    server {
        listen ;
        server_name     a2.xxx.com;
        location / {
            proxy_pass http://a2.host:/;
        }
    }
    server {
        listen ;
        server_name     b1.xxx.com;
        location / {
            proxy_pass http://b1.host:/;
        }
    }
           

注解:

a、b兩個tomcat分别使用端口8080和8081。​a tomcat釋出2個應用分别使用host:name為a1.host和a2.host; ​ b tomcat釋出1個應用 host:name 為b1.host​。

3個server分别監聽 ​a1.xxx.com、a2.xxx.com、b1.xxx.com ​的80端口,反向代理

a1.host:8080、 a2.host:8081、b1.host:8080​。其中相應的a1.xxx.com與a1.host可以一樣,總之目的是用戶端使用80端口通路伺服器上的8080和8081端口。

nginx實作負載均衡

nginx.conf配置如下:
server {
        listen ;
        server_name www.xxx.com;
        location / {
            proxy_pass http://balance_serveralias;
        }
    }
    upstream balance_serveralias {
        #ip_hash;
        server  : weight=;
        server  : weight=;
    }
           

注解:

server_name指定了用戶端通路位址,balance_serveralias 隻是别名,沒有實際意義​

  • -

常見模式

  • 輪詢(預設),每個請求按時間順序逐一配置設定到不同的負載伺服器,如果負載伺服器down掉,能自動剔除。
upstream serveralias {
    server :;
    server :;
}
           
  • 權重,指定輪詢幾率,weight比例決定通路幾率,将配置較好的機器配更高的權重,預設權重為1。
upstream serveralias {
    server : weight=;
    server : weight=;
}
           
  • ip_hash,将用戶端ip通過hash算法比對固定的一台伺服器,這是唯一一種能保證session同步的模式;其他模式下隻有第一次通路的機器儲存有使用者的session資訊,需要添加session共享元件。
upstream serveralias {
    ip_hash;
    server :;
    server :;
}
           
  • fair,需要添加第三方插件,按後端伺服器的響應時間來配置設定請求,響應時間短的優先配置設定。
upstream serveralias {
    server :;
    server :;
    fair;
}
           
  • url_hash,需要添加第三方插件,按通路url的hash結果來配置設定請求,使每個url定向到同一個後端伺服器,後端伺服器為緩存時比較有效。
upstream serveralias {
    server .:;
    server .:;
    hash $request_uri;
    hash_method crc32;
}
           

裝置狀态參數設定

- weight 權重

- down 表示這台機器暫時不參與負載

- backup 災備,在其他機器忙或者down的情況下使用

注意事項

參與負載的伺服器名使用ip加端口的形式指定,域名也可以,但會被先解析成ip位址再參與負載。如tomcat指定localhost:8080通路a目錄,hostalias:8080通路目錄b,參與負載的機器即使配置為hostalias:8080,最終通路的還是目錄a(即localhost:8080)

常見問題

出現nginx.pid找不到的情況時,重新指定nginx.conf位置 /usr/local/nginx/nginx -c /usr/local/nginx/nginx.conf

繼續閱讀