Nginx

本次目的是使用Nginx負載均衡,下面開始記錄過程以及發生的問題的解決:

 

準備最少2個Tomcat,2個Tomcat默認端口是8080,需要更改一個爲其他端口

我這裏是8080與8081,更改端口在conf目錄下的server.xml中配置,端口,訪問端口,端口。避免啓動發送端口占用問題

 

啓動Tomcat先測試訪問:

訪問1:

訪問2:

 

準備工作完畢後,這就是2個服務者。當有客戶來時,由這兩個服務交替分擔服務客戶去

 

下載Nginx工具

 

在logs目錄下,有2個日誌需要注意:

一個Access成功訪問日誌,一個是error錯誤日誌。啓動出現錯誤,或是成功訪問查看日誌。在logs中

 

接下來如何配置呢?讓Nginx管理我們的Tomcat去調度處理請求:

編輯conf目錄下的nginx.conf文件,配置的有這樣幾個地方注意:

upstream test.com將Tomcat註冊到Nginx容器中,test.com只是個名稱。listen Nginx監聽的端口,location /當出現請求,交給誰去處理。

 

什麼是代理,在Java中有靜態與動態代理。代理是在代碼前後插入操作。幫你完成一些操作。proxy_pass,當有人來請求Nginx時,這時在這之前由誰去處理本次請求。按照url,進入到我們配置的服務池中,挑選服務來處理請求

 

在這個配置中,完成了這樣的步驟:

1:按照url將服務註冊到容器中,給容器取個名字便於引用

2:配置Nginx監聽端口

3:配置請求時由誰來處理,填寫容器的url,url是容器名字

 

中間這幾句代碼:

upstream test.com {                    #test.com是名字,隨意取,容器內是n個服務對象,weight權重描述,越大服務被分配概率則越大
      server 127.0.0.1:8080 weight=2;
      server 127.0.0.1:8081 weight=1;
    }

    server {
        listen       81;                     #監聽端口
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location ~ .*\.(css|js|jpg|png)$ {         #遇到資源時,處理的路徑,經常發生404,配置進行處理
            root /;
        }
 
        location / {
            proxy_pass http://test.com;            #當有人請求時,交與給誰處理?填寫容器url,挑選服務進行處理
            proxy_redirect default;
        }

......................

 

配置到這裏就可以了,start nginx.exe啓動nginx。

啓動後,在window任務管理區是管不掉,一次是啓動2個,關閉一個,又打開。

關閉命令:taskkill /im nginx.exe /f

Linux可以嘗試使用kill關閉,還未測試

 

訪問Nginx監聽的81端口,已經轉到Tomcat爲8080身上去處理了,資源全部請求成功,網站小圖標因爲沒有

當我們多訪問兩次,就換了一個服務者來進行處理了

 

我這裏將圖片都放在了跟目錄下的img上。因爲配置時:

location ~ .*\.(css|js|jpg|png)$ {
            root /;
}

有遇到這樣的請求,轉到/根目錄下去,這樣路徑就是:

http://192.168.1.8:81/img/xxxxx.png

192.168.1.8:81,在收到請求時,被8080去處理了。url是:192.168.1.8:8080。

剩下的uri是:img/xxxxx.png,這個照片就符合conf的配置,進去根目錄,按照img去img下找文件了。

 

爲什麼配個這?當url是:192.168.1.8:8080時,這個時候,如果我不配置/,那麼就是相對路徑,則去工程目錄下找。

我的嘗試是,在工程路徑下找能找到,問題是,6個照片,每次請求,總會有1-2個照片404,刷新一次請求,之前404的照片就出來了。但其他的照片又404了。意思是,資源並沒有完整的下載下來。配置在外面,去請求外部的資源,反而自己都請求到了。故有此一配。

 

其餘就沒啥了,Nginx。我們將服務註冊進去,由這個容器,來決定由他裏面的服務池,選誰來處理請求。這就是所謂的負載均衡。爲啥需要這,因爲一個服務器吃不住的時候,可以多個服務同時服務客戶。那麼這時候,大家都請求一個服務,由一個服務去告訴客戶端去請求誰,將客戶分擔出去。分擔處理減少壓力。這就是負載均衡乾的事情。合理的選擇擇優服務去處理。

 

有個問題是這樣,如何保證處理者與客戶端始終是一個呢?如果服務者不是一個,數據可能會亂掉。那就只有做標識了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章