nginx tomcat 配置
準備工作:兩個tomcat 執行命令 cp -r apache-tomcat-8。5。56 apache-tomcat-8。5。56_2
修改被複制的tomcat2下conf的server。xml 的埠號,不能與tomcat1的埠號重複,不然會啟動報錯 ,一臺電腦上想要啟動多個tomcat,需要修改server。xml檔案的3個埠
分別修改tomcat1和tomcat2 埠,這裡有三個埠需要修改,分別如下: shutdown 埠:8005 主要負責啟動關閉。 ajp埠:8009 主要負責透過ajp均衡(常用於apache和tomcat整合) http埠:8080 可以透過web頁面直接訪問(nginx+tomcata整合)
tomcat2的http埠修改為888】1
tomcat2的ajp埠修改為8010
tomcat2的shutdown埠修改為8006
分別在每個tomca的bin目錄下啟動服務 startup
使用 lsof -f:8080 lsof -f:8881 檢視是否埠被佔用,得知專案已經成功被啟動
兩個埠訪問都是正常的
nginx conf檔案講解
全域性塊:配置影響nginx全域性的指令。一般有執行nginx伺服器的使用者組,nginx程序pid存放路徑,日誌存放路徑,配置檔案引入,允許生成worker process數等
events塊:配置影響nginx伺服器或與使用者的網路連線有每個程序的最大連線數,選取哪種事件驅動模型處理連線請求,是否允許同時接受多個網路連線,開啟多個網路連線序列化等。
http塊;可以巢狀多個server,配置代理,快取,日誌定義等絕大多數功能和第三方模組的配置。如檔案引入,mime-type定義,日誌自定義,是否使用sendfile傳輸檔案,連線超時時間,單連線請求數等
server塊:配置虛擬主機的相關引數,一個http中可以有多個server
location塊:配置請求的路由,以及各種頁面的處理情況配置負載均衡
worker_processes
設定nginx工作的程序數,一般設定與cpu核數相等或2倍
events {
use epoll;
worker_connections 1024;
}
epoll
事件模型,處理效率高
worker_connections
單個worker程序允許客戶端最大連線數,實際最大值=work_processes * worker_connections
multi_accept
告訴nginx收到一個新連線的通知後接受盡可能多的連線,預設是on,設定為on後,多個worker按
序列
方式來處理連線,也就是一個連線只有一個worker被喚醒,其他的處於休眠狀態,設定為off後,多個worker按並行方式來處理連線,也就是一個連線會喚醒所有的worker,直到連線分配完畢,沒有取得連線的繼續休眠。
引數只針對非常大量連線有最佳化作用。
Include
mime。types : 媒體型別include 只是一個在當前檔案中包含另一個檔案內容的指令。
default_type
application/octet-stream :預設媒體型別足夠支援所以請求。
sendfIle on
:
開啟高效檔案傳輸模式
,sendfle指令指定nginx是否呼叫sendfle數來輸出檔案,對於普通應用設為 on,如果
用來進行下載等應用磁碟IO重負載應用,可設定為off
,以平衡磁碟與網路IO處理速度,降低系統的負載。注意:如果圖片顯示不正常把這個改成off。
tcp_nopush on
:
必須在sendfle開啟模式才有效,防止網路阻塞
,積極的減少網路報文段的數量(將響應頭和正文的開始部分一起傳送,而不一個接一個的傳送)
keepalive_timeout
網路會話保持時間
tcp_nodelay
:也是防止網路
阻塞
,需要開啟keepalive引數才有效
client header buffer size 4k
:客戶端
請求頭部的緩衝區大小
,這個可以根據你的系統分頁大小來設定,一般一個請求頭的大小不會超過1k,不過由於一般系統分頁都要大於1k,所以這裡設定為分頁大小。分頁大小可以用命令getconf PAGESIZE取得
open file cache max=102400 inactive=20s
: 為開啟
檔案指定快取
,預設是沒有啟用的,max指定快取數量,建議和開啟檔案數一致,inactive 是指經過多長時間檔案沒被請求後刪除快取
open file cache valid 30s
:這個是指檢查一次快取的有效資訊的頻率
open file cache min uses 1:
open file cache指今中的inactive 引數時間內檔案的最少使用次數,如果超過這數字,檔案描述符一直是在快取中開啟的,如上,如果有一個檔案在inactive 時間內一次沒被使用,它將被移除
client header timeout : 設定請求頭的超時時間
。我們也可以把這個設定低一些如果超過這個時間沒有傳送任何資料,nginx 將返回request time out的錯誤
client body timeout :設定請求體的超時時間
。可以把這個設定低一些,超過這個時間沒有傳送任何資料,和上面一樣的錯誤提示
reset timeout connection : 通知nginx關閉未響應的客戶端連
接,會釋放那個客戶端所佔有的記憶體空間
send timeout:響應客戶端超時時間
,這個超時時間僅限於兩個活動之間的時間,如果超過這個時間,客戶端沒有任何活動,nginx關閉連線。
server tokens
:並不會nginx執行的速度更快,但它可以關閉在錯誤頁面中的nginx版本資訊,更安全
client max body size:上傳檔案大小的限制
配置負載均衡
在nginx。conf 配置
upstream zcz_app {server 192。168。43。138:8080 weight=1 max_fails=2 fail_timeout=30s;server 192。168。43。138:8881 weight=1 max_fails=2 fail_timeout=30s;}
負載均衡以upstream為模組定義,後面跟模組名稱
server ip地址:服務埠:
均衡策略: weight 權重
輪詢次數:max_fails
輪詢時長:fail_timeout
在location模組下使用負載均衡,註解自帶的location,新增上面定義的負載均衡
location / {proxy_next_upstream http_502 http_504 error timeout invalid_header;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://zcz_app;root html;index index。html index。htm;}
重新載入配置檔案
/usr/local/nginx/sbin/nginx -s reload
未負載均衡前需要加上埠號
負載均衡後訪問不需要加埠號
負載均衡的幾種方式
輪詢
:預設策略,如果伺服器down掉了,會自動刪除該伺服器;此策略適合伺服器配置相當,無狀態且短平快的服務使用
iphash依據ip分配
:iphash不能與backup同時使用:此策略適合有狀態服務,比如session; 伺服器需要別除,必須手動停掉 (常用於灰度釋出,透過配置iphash 實現)
least conn最小連線
:此負載均衡策略適合請求處理時間長短不一造成伺服器過載的情況
weight權重
:權重越高分配到需要處理的請求越多;此策略可以與least conn和ip hash結合使用,此策略比較適合伺服器的硬體配置差別比較大的情況
fair響應時間
:負載均衡策略的實現需要安裝第三方外掛;按照伺服器端的響應時間來分配請求,響應時間短的優先分配
url_hash依據URL分配
:按訪問ur的hash結果來分配請求,使每個url定向到同一個後端伺服器,要配合快取命中來使用