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