1. 程式人生 > >Nginx與Tomcat簡易分散式部署操作總結

Nginx與Tomcat簡易分散式部署操作總結

此次主要為了練習和熟悉Nginx這個反向代理伺服器的反向代理功能和它的負載均衡功能。反向代理,主要用於伺服器叢集分散式部署的情況下,反向代理隱藏了伺服器的資訊。以前沒有自己安裝和配置使用過,這次練習,總結一下安裝和使用心得。

Nginx安裝總結:

Nginx安裝非常容易,類似於Tomcat安裝(下面的所有安裝都在centOS 7系統中安裝),

本人安裝nginx-1.12.2.tar.gz版本。

安裝Nginx時,必須先安裝相應的編譯工具,

#yum -yinstall gcc gcc-c++ autoconf automake

此外,Nginx還需要依賴以下工具:

zlib:Nginx提供gzip模組,需要zlib庫支援

openssl:Nginx提供ssl功能

pcre:支援地址重寫rewrite功能

yum -yinstall zlib zlib-devel openssl openssl--devel pcre pcre-devel

將已下載好的nginx-1.12.2.tar.gz解壓: tar –vxzf nginx-1.12.2.tar.gz

配置configure:./configure --prefix=/usr/local/nginx --user=nobody

prefix是設定安裝目錄,而user是設定nginx的worker使用者

執行編譯和安裝命令 make  make install

將Nginx設定Linux系統開機啟動:

建立設定啟動指令碼檔案nginx,然後拷貝到/etc/init.d/下

執行設定檔案的執行許可權chmod a+x /etc/init.d/nginx將指令碼檔案設定成可執行檔案

使用chkconfig進行管理,將nginx服務加入chkconfig管理列表chkconfig --add /etc/init.d/nginx

加完這個之後,就可以使用service對nginx進行啟動,重啟等操作了

servicenginx start

servicenginx stop

然後通過chkconfig將nginx啟動

Chkconfignginx on

Tomcat安裝類似:

解壓apache-tomcat-8.5.23.tar.gz到指定位置

tomcat伺服器執行時是需要JDK支援的,所以必須配置好JDK用到的那些環境變數

編輯/etc下的profile檔案,新增如下資訊(jdk資訊):

# jdkinfoMessage

exportJAVA_HOME=/usr/local/java/jdk1.8.0_161

exportJRE_HOME=/usr/local/java/jdk1.8.0_161/jre

exportPATH=$PATH:/usr/local/java/jdk1.8.0_161/bin

exportCLASSPATH=./:/usr/local/java/jdk1.8.0_161/lib:/usr/local/java/jdk1.8.0_161/jre/lib

本人使用Nginx作為接收請求的伺服器,以下是我的個人Nginx配置檔案:

worker_processes  2;

#工作模式及連線數上限

events {

    #epoll是多路複用IO(I/OMultiplexing)中的一種方式,

    #僅用於linux2.6以上核心,可以大大提高nginx的效能

    use  epoll;

    #單個後臺worker process程序的最大併發連結數

    worker_connections  2048;

}

# http設定

http {

    #設定mime型別,型別由mime.type檔案定義

    include       mime.types;

    default_type  application/octet-stream;

    #設定日誌格式

    log_format main  '$remote_addr - $remote_user[$time_local] "$request" '

                      '$status $body_bytes_sent"$http_referer" '

                     '"$http_user_agent" "$http_x_forwarded_for"';

    access_log logs/access.log  main;

    #sendfile 指令指定nginx 是否呼叫 sendfile 函式(zerocopy 方式)來輸出檔案

    #對於普通應用,必須設為 on,

    #如果用來進行下載等應用磁碟IO重負載應用,可設定為 off,

    #以平衡磁碟與網路I/O處理速度,降低系統的uptime.

    sendfile        on;

    #tcp_nopush     on;

    #連線超時時間

    #keepalive_timeout  0;

    keepalive_timeout  65;

    #開啟gzip壓縮

    gzip on;

    # 負載均衡配置  反向代理伺服器的伺服器池  伺服器的叢集

    upstream tomcatDemo {

       #ip_hash; 

           #伺服器1

       server 192.168.226.129:8129 weight=2;

       #伺服器2

       server 192.168.226.130:8130 weight=1;

    }

    #設定虛擬主機配置  伺服器主機配置

    server {

       #偵聽 8199 埠

        listen 8199;

       #定義使用 localhost 訪問

        server_name  ngdemo.com.cn;

        charset utf-8;

       #設定本虛擬主機的訪問日誌

        access_log  logs/host.access.log  main;

       location / {

              add_headerAccess-Control-Allow-Origin *;

            root /home/webapp/static/app;

          #定義首頁索引檔案的名稱

            index index.html index.htm;

        }

       #路由配置 

       location /tomcatDemo {

          #用於指定反向代理伺服器的伺服器池

            proxy_pass http://tomcatDemo;

          #作用web伺服器上有多個站點時,用該引數header來區分反向代理哪個域名

            proxy_set_header Host $host;

          #作用是後端伺服器上的程式獲取訪客真實IP,從該header頭獲取。部分程式需要該功能

          proxy_set_header X-Forwarded-For $remote_addr;

        }

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {

            root   html;

        }

    }

}

下面是我的nginx執行的專案:

下面是利用了負載均衡的效果:

請求分發到不同的伺服器上了