1、Nginx是什么?
Nginx是一個(gè)輕量級(jí)、高性能、穩(wěn)定性高、并發(fā)性好的HTTP和反向代理服務(wù)器。
2、三大功能
1)反向代理
正向代理:特定情況下,代理用戶訪問服務(wù)器,需要用戶手動(dòng)的設(shè)置代理服務(wù)器的ip和端口號(hào)。
反向代理:是用來代理服務(wù)器,代理用戶要訪問的目標(biāo)服務(wù)器。代理服務(wù)器接受請(qǐng)求,然后將請(qǐng)求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)的服務(wù)器(服務(wù)集群模式),并將從服務(wù)器上得到的結(jié)果返回給客戶端,此時(shí)代理服務(wù)器對(duì)外就表現(xiàn)為一個(gè)服務(wù)器。
Nginx在反向代理上,提供靈活的功能,可以根據(jù)不同的正則采用不同的轉(zhuǎn)發(fā)策略,如圖設(shè)置好后不同的請(qǐng)求就可以走不同的服務(wù)器。
2)負(fù)載均衡
負(fù)載均衡:多在高并發(fā)情況下需要使用。其原理就是將數(shù)據(jù)流量分?jǐn)偟蕉鄠€(gè)服務(wù)器執(zhí)行,減輕每臺(tái)服務(wù)器的壓力,多臺(tái)服務(wù)器(集群)共同完成工作任務(wù),從而提高了數(shù)據(jù)的吞吐量。
Nginx可使用的負(fù)載均衡策略有:輪詢(默認(rèn))、權(quán)重、ip_hash、url_hash(第三方)、fair(第三方)。
3)動(dòng)靜分離
常用于前后端分離,Nginx提供的動(dòng)靜分離是指把動(dòng)態(tài)請(qǐng)求和靜態(tài)請(qǐng)求分離開,合適的服務(wù)器處理相應(yīng)的請(qǐng)求,使整個(gè)服務(wù)器系統(tǒng)的性能、效率更高。
Nginx可以根據(jù)配置對(duì)不同的請(qǐng)求做不同轉(zhuǎn)發(fā),這是動(dòng)態(tài)分離的基礎(chǔ)。靜態(tài)請(qǐng)求對(duì)應(yīng)的靜態(tài)資源可以直接放在Nginx上做緩沖,更好的做法是放在相應(yīng)的緩沖服務(wù)器上。動(dòng)態(tài)請(qǐng)求由相應(yīng)的后端服務(wù)器處理。
3、配置文件
#web服務(wù)器
server {
listen 81; # 監(jiān)聽的端口
server_name localhost; # 域名或ip
location / { # 訪問路徑配置
root index;# 根目錄
index index.html index.htm; # 默認(rèn)首頁
}
error_page 500 502 503 504 /50x.html; # 錯(cuò)誤頁面
location = /50x.html {
root html;
}
}
# 虛擬主機(jī)
server {
listen 80;
server_name www.lishaojun.com;
location / {
root cart;
index cart.html;
}
}
server {
listen 80;
server_name abc.lishaojun.com;
location / {
root search;
index search.html;
}
}
#反向代理+負(fù)載均衡
upstream Tomcat-travel {
server 192.168.177.129:8080;
server 192.168.177.129:8081 weight=2;
server 192.168.177.129:8082;
}
server {
listen 80; # 監(jiān)聽的端口
server_name www.lishaojun.com; # 域名或ip
location / { # 訪問路徑配置
# root index;# 根目錄
proxy_pass http://tomcat-travel; # 別名
index index.html index.htm; # 默認(rèn)首頁
}
error_page 500 502 503 504 /50x.html; # 錯(cuò)誤頁面
location = /50x.html {
root html;
}
}