Nginx是一個HTTP服務器,可以將服務器上的靜態(tài)文件(如HTML划栓、圖片)通過HTTP協(xié)議展現(xiàn)給客戶端。
反向代理:
客戶端本來可以直接通過HTTP協(xié)議訪問某網(wǎng)站應用服務器骡显,如果網(wǎng)站管理員在中間加上一個Nginx星爪,客戶端請求Nginx浆西,Nginx請求應用服務器,然后將結(jié)果返回給客戶端顽腾。
反向代理的作用:
負載均衡:將相同的應用部署在多臺服務器上近零,將大量用戶的請求分配給多臺機器處理。同時帶來的好處是,其中一臺服務器萬一掛了久信,只要還有其他服務器正常運行猪瞬,就不會影響用戶使用。
Nginx的配置:
upstream myapp {
server 192.168.0.111:8080; # 應用服務器1
server 192.168.0.112:8080; # 應用服務器2
}
server {
listen 80;
location / {
proxy_pass http://myweb;
}
}
虛擬主機:如將www.aaa.com和www.bbb.com兩個網(wǎng)站部署在同一臺服務器上入篮,兩個域名解析到同一個IP地址陈瘦,但是用戶通過兩個域名卻可以打開兩個完全不同的網(wǎng)站,互相不影響潮售,就像訪問兩個服務器一樣痊项,所以叫兩個虛擬主機。
server {
listen 80 default_server;
server_name _;
return 444; # 過濾其他域名的請求酥诽,返回444狀態(tài)碼
}
server {
listen 80;
server_name www.aaa.com; # www.aaa.com域名
location / {
proxy_pass http://localhost:8080; # 對應端口號8080
}
}
server {
listen 80;
server_name www.bbb.com; # www.bbb.com域名
location / {
proxy_pass http://localhost:8081; # 對應端口號8081
}
}
在服務器8080和8081分別開了一個應用鞍泉,客戶端通過不同的域名訪問,根據(jù)server_name可以反向代理到對應的應用服務器肮帐。
動態(tài)靜態(tài)資源分離:
之前開發(fā)web方面的程序時候我們習慣將html咖驮、css等資源文件也放置于Tomcat中,用戶訪問后tomcat需要將請求的這些靜態(tài)資源文件一并返回給用戶训枢。
再者如果有多臺同業(yè)務邏輯的tomcat服務器的話托修,同樣的資源還需要在每個服務器上放一份,同時也增加了tomcat服務器的網(wǎng)絡IO恒界。
如果我們只講JSP之類的請求交給tomcat睦刃,在代理服務器上存放靜態(tài)資源,當用戶的請求非動態(tài)資源的時候十酣,我們完全可以將代理服務器的靜態(tài)資源直接返回給用戶涩拙,而不去增大Tomcat的壓力,
tomcat只需要負責邏輯處理和動態(tài)資源的加載就可以了耸采。
Tomcat的高并發(fā)性能很弱兴泥,所以在處理靜態(tài)請求的時候,我們就拋給Nginx處理虾宇,而Tomcat專門處理動態(tài)請求搓彻。
Nginx和Tomcat結(jié)合方式:
- 將所有靜態(tài)頁面交給nginx,動態(tài)請求交給后端tomcat處理文留。
- 將所有請求交給后端tomcat服務器處理好唯,只利用Nginx自身的負載均衡功能進行多臺tomcat服務器調(diào)度流量竭沫。
WEB-INF
WEB-INF是Java的WEB應用的安全目錄燥翅。所謂安全就是客戶端無法訪問,只有服務端可以訪問的目錄蜕提。