1.8.4 搭建Nginx+Java環境html
Apache對Java的支持很靈活,它們的結合度也很高,例如Apache+Tomcat和Apache+resin等均可以實現對Java應用的支持。Apache通常採用一個內置模塊來和Java應用服務器打交道。與Apache相比,Nginx在配合Java應用服務器方面,耦合度很低,它只能經過自身的反向代理功能來實現與Java應用服務器的支持。但這偏偏是Nginx的一個優勢,耦合度的下降,可使Nginx與Java服務器的相互影響降到最低。web
接下來經過Nginx+Tomcat的實例來說解Nginx對Java的支持。Tomcat在高併發環境下處理動態請求時性能很低,而在處理靜態頁面更加脆弱。雖然Tomcat的最新版本支持epoll,可是經過Nginx來處理靜態頁面要比經過Tomcat處理在性能方面好不少。正則表達式
Nginx能夠經過如下兩種方式來實現與Tomcat的耦合:後端
將靜態頁面請求交給Nginx,動態請求交給後端Tomcat處理。tomcat
將全部請求都交給後端的Tomcat服務器處理,同時利用Nginx自身的負載均衡功能進行多臺Tomcat服務器的負載均衡。服務器
下面經過兩個配置實例分別講述這兩種實現Nginx與Tomcat耦合的方式。併發
1.動態頁面與靜態頁面分離的實例負載均衡
這裏假定Tomcat服務器的IP地址爲192.168.12.130,同時Tomcat服務器開放的服務器端口爲8080。Nginx相關配置代碼以下:jsp
在這個實例中,首先定義了一個虛擬主機www.ixdba.net,而後經過location指令將/web/www/html/img/目錄下的靜態文件交給Nginx來完成。最後一個location指令將全部以.jsp、.do結尾的文件都交給Tomcat服務器的8080端口來處理,即http://192.168.12.130:8080。高併發
須要特別注意的是,在location指令中使用正則表達式後,proxy_pass後面的代理路徑不能含有地址連接,也就是不能寫成http://192.168.12.130:8080/,或者相似http://192.168.12.130:8080/jsp的形式。在location指令不使用正則表達式時,沒有此限制。
2.多個Tomcat負載均衡的實例
這裏假定有3臺Tomcat服務器,分別開放不一樣的端口,地址以下:
Nginx的相關配置代碼以下:
在這個實例中,先經過upstream定義一個負載均衡組,組名爲mytomcats,組的成員就是上面指定的3臺Tomcat服務器;接着經過server指令定義一個www.ixdba.net的虛擬主機;而後經過location指令以正則表達式的方式將指定類型的文件所有交給Nginx去處理;最後將其餘全部請求所有交給負載均衡組來處理。
這裏還有一點須要注意,若是在location指令使用正則表達式後再用alias指令,Nginx是不支持的。