簡(jiǎn)介
Java服務(wù)大多是跑在tomcat里,但是眾所周知tomcat的并發(fā)性能沒有優(yōu)勢(shì)(tomcat8及以上的版本可能有所改善),所以為了更好的適應(yīng)高并發(fā)的應(yīng)用場(chǎng)景,我們可以使用tomcat+nginx實(shí)現(xiàn)動(dòng)靜分離,在處理靜態(tài)請(qǐng)求的時(shí)候,就直接給Nginx處理,動(dòng)態(tài)請(qǐng)求就轉(zhuǎn)給tomcat處理。
簡(jiǎn)單一句話就是,nginx負(fù)責(zé)靜態(tài)請(qǐng)求,以及高并發(fā)下的負(fù)載均衡調(diào)度動(dòng)態(tài)請(qǐng)求給tomcat處理。
Nginx配置普通tomcat跳轉(zhuǎn)
通過(guò)proxy_pass配置請(qǐng)求轉(zhuǎn)發(fā)地址。即當(dāng)訪問(wèn)localhost的8010端口時(shí),請(qǐng)求會(huì)跳轉(zhuǎn)至localhost的8080端口處。
動(dòng)靜分離配置
上面我們直接試了一個(gè)小例子,讓nginx進(jìn)行轉(zhuǎn)發(fā),即所謂的反向代理。但實(shí)際上我們的需求不會(huì)是這樣的,我們需要分文件類型來(lái)進(jìn)行過(guò)濾,比如jsp直接給tomcat處理,因?yàn)閚ginx并不是servlet容器,沒辦法處理JSP,而html,js,css這些不需要處理的,直接給nginx進(jìn)行緩存。
這時(shí)最主要用的還是location這個(gè)元素,并且涉及到一部分正則,但不難,具體配置如下:
此時(shí)再直接輸入localhost:8010,則會(huì)報(bào)404錯(cuò)誤了。但是輸入localhost:8010/index.jsp,則一樣可以跳轉(zhuǎn)至tomcat首頁(yè)中。
負(fù)載均衡配置
當(dāng)一臺(tái)服務(wù)器出現(xiàn)故障后,我們需要將請(qǐng)求自動(dòng)轉(zhuǎn)向另一臺(tái)服務(wù)器,此種需求該如何配置呢?利用Nginx也是比較方便能夠?qū)崿F(xiàn),具體配置如下:
注意,上面還加上了一個(gè)weight屬性,此屬性表示各服務(wù)器被訪問(wèn)到的權(quán)重,weight越高訪問(wèn)到的幾率越高。
其他配置