一.Nginx介紹
1.1前言
隨著客戶端用戶不斷增多,請求量增加,并發量增高,那么咱們需要搭建服務器的集群,
為什么使用Nginx?
- 客戶端發送請求要發給哪臺服務器?
- 如果所有客戶端的請求都發給了服務器1?
- 客戶端請求可能是靜態資源也可能是動態資源?
這時候,我們就需要追加一個Nginx來反向代理,客戶端只需要發送請求給Nginx,讓它幫我們解決上面的全部問題,

1.2 Nginx介紹
特點:
- 穩定性強,7*24不間斷運行
- Nginx提供了非常豐富的配置實體
- 記憶體占用小,并發能力強(TB,JD雙11都在使用,是對Nginx的額外封裝)
二.下載安裝
進入官網如下圖:

下載后解壓即可(注:不要放在有中文路徑的檔案夾下面),
雙擊nginx.exe程式,就啟動了,

然后我們在瀏覽器中輸入localhost(nginx默認是80埠,故不需要加埠號),出現下列畫面即啟動成功,

三.反向代理
3.1正向代理與方向代理介紹
正向代理:
1:正向代理服務器是由客戶端設立的,
2:客戶端了解代理服務器和目標是誰,
3:幫助我們提高訪問的權限,提高訪問的速度,對目標服務器隱藏客戶端的ip地址,
反向代理:
1:反向代理服務器是配置在服務端的,
2:客戶端時不知道訪問的那一臺服務器的,
3:達到負載均衡,并且可以隱藏服務器真正的ip地址,

3.2基于Nginx的反向代理實作
客戶端:瀏覽器
反向代理服務器:Nginx
服務器:Tomcat
http://localhost:8080/hello/toLogin.do(自己手寫的測驗專案網址)

修改Nginx的組態檔nginx.conf如上圖,
其中修改監聽埠為:8888,訪問Nginx網址為:localhost8888,需要跳轉到目標服務器的網址為http://localhost:8080/hello/toLogin.do
保存后重啟服務器,在瀏覽器中輸入localhost8888,即可跳轉到我們目標服務器的網址,

3.3關于Nginx的location路徑的映射
# 1. =匹配
location = /{
#精準匹配,主機名后面不能帶任何的字符
}
# 2. 通用匹配
location /xxx{
#匹配所有以/xxx開頭的路徑
}
# 3. 正則匹配
location ~ /xxx{
#匹配所有以/xxx開頭的路徑(優先級大于2)
}
# 4. 匹配開頭路徑
location ^~ /xxx/{
#匹配所有以/xxx開頭的路徑(優先級大于3)
}
# 5. ~* \.(gif|jpg|png){
#匹配以gif或jpg或png結尾的路徑
}
組態檔里的server塊里面可以配置多各location塊,通過上面的優先級匹配,可以訪問不同的目標服務器網址,
四.Nginx的負載均衡
Nginx為我們提供了默認的三種負載均衡策略:
1.輪詢
將客戶端發起的請求,平均分配給每一臺服務器,(依次發送給每一臺服務器)
2.權重
會講客戶端的請求,根據服務器的權重,分配不同的數量,(比如多臺服務器的處理速度不一樣)
3.ip_hash
基于發起請求的客戶端的ip地址不同,他始侄訓將請求發送到指定的服務器,(根據ip地址獲取hash值,同樣的hash值發送到同一臺服務器)
4.1 輪詢
在server上面配置自己的server,如下:
upstream 服務名稱{
server ip:port; #注意:只能到埠號,后面不能加其他地址!!!
server ip:port;
#可以配置多個,上面只能配置ip地址加埠號,不能再后面跟其他的地址
}
在location塊配置如下:
location / {
proxy_pass http://upstream的服務名稱;
}
4.2 權重
只需要在輪詢的基礎上加上一點點配置:
upstream 服務名稱{
server ip:port weight=權重比例;
server ip:port weight=權重比例;
#可以配置多個,上面只能配置ip地址加埠號,不能再后面跟其他的地址
}
在location塊配置如下:
location / {
proxy_pass http://upstream的服務名稱;
}
4.3 ip_hash
配置只需要在upstream下面加上一行配置:
upstream 服務名稱{
ip_hash;
server ip:port;
server ip:port;
}
在location塊配置如下:
location / {
proxy_pass http://upstream的服務名稱;
}
五.Nginx動靜分離
Nginx并發能力公式:
組態檔中worker_processes*worker_connections/2|4=Nginx的并發能力
動態資源需要/4
靜態資源/2
Nginx通過動靜分離,來提高并發能力,

5.1 動態資源代理配置
與上面負載均衡配置情況是一樣的
upstream 服務名稱{
server ip:port;
server ip:port;
}
在location塊配置如下:
location / {
proxy_pass http://upstream的服務名稱;
}
5.2 靜態資源代理配置
#配置如下:
location / {
root 靜態資源路徑;
index 默認訪問路徑下的什么資源;
autoindex on; #代表展示靜態資源的全部內容,以串列的形式展開,
}
六.Nginx集群
對于服務器我們可以配置多個來防止某一臺服務器宕機,但是如果只有一個Nginx,也有可能出現宕機的情況,所以我們需要配置Nginx集群來解決這個問題,
其中需要keepalived與haproxy,keepalived幫我們監聽Nginx是否運行正常,haproxy提供一個虛擬的路徑,統一接受客戶端的請求,
Nginx集群
對于服務器我們可以配置多個來防止某一臺服務器宕機,但是如果只有一個Nginx,也有可能出現宕機的情況,所以我們需要配置Nginx集群來解決這個問題,

其中需要keepalived與haproxy,keepalived幫我們監聽Nginx是否運行正常,haproxy提供一個虛擬的路徑,統一接受客戶端的請求,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/221215.html
標籤:java
