初識TomCat之3——TomCat動靜分離

1、背景介紹
在生產環境中tomcat不多直接用於響應客戶端請求,即便它能夠經過Connector組件接收用戶的請求,通常來講常見於server.xml配置文件中Connector鏈接器的類型有3種:http、SSL和AJP 1.3
初識TomCat之3——TomCat動靜分離
在生產環境中,tomcat前端通常會有一個專門的web服務器來接收用戶請求,經常使用的web服務器由apache和nginx,他們各自特色以下:
nginx:易於實現動靜分離,將動態請求反代給後端的tomcat服務器,但與tomcat之間只能走http或SSL協議,不支持AJP協議。
apache:與tomcat同屬於ASF軟件,兼容性更好,在反代tomcat時能夠走二進制的AJP協議,效率更高,但動靜分離很困難。
下面分別已apache和nginx爲例作關於tomcat反代的實驗。
2、網絡拓撲
網絡拓撲以下圖所示:
初識TomCat之3——TomCat動靜分離
用戶向web服務器發出請求,web服務器將用戶請求反代至tomcat服務器,使用Nginx當web服務器時實現動靜分離,使用apche當web服務器時分別實現http和ajp協議。本次試用的操做系統爲CentOS7.4,JDK版本1.8,tomcat版本8.5,nginx版本1.12.1。
3、操做步驟
1.nginx實現動靜分錄
安裝nginx服務,並設置訪問的地址,將以.jsp或者.do結尾的請求都發往指定地址
初識TomCat之3——TomCat動靜分離
此時再訪問自定義的網站時nginx服務器會相應靜態內容請求
初識TomCat之3——TomCat動靜分離
而以.jsp或者.do結尾的請求會重定向到tomcat上
初識TomCat之3——TomCat動靜分離
須要注意的是:使用nginx在作反代時後端若是有多個虛擬主機,反代的地址要用虛擬主機的地址而不能是IP地址,不然tomcat的默認主機不是你要訪問的主機時會被定義到其餘主機上
初識TomCat之3——TomCat動靜分離
2.apache實現http和jsp協議反代
apache的反代功能由主模塊(proxy_module)和子模塊proxy_xxx_module共同完成
初識TomCat之3——TomCat動靜分離前端

(1)安裝httpd服務,註銷掉DocumentRoot
初識TomCat之3——TomCat動靜分離
(2)本次仍是基於虛擬主機測試,在conf.d目錄下建立vhost.conf配置文件
初識TomCat之3——TomCat動靜分離
關閉虛擬主機的正向代理,ProxyPass能夠設置成IP地址就是由於相較於nginx而言apache多了一個ProxyPreserveHost選項,能夠傳遞用戶請求的虛擬主機名給後端,此時經過域名訪問發現被定向到tomcat的對應虛擬主機中
初識TomCat之3——TomCat動靜分離
而經過IP地址訪問會被定向到默認虛擬主機
初識TomCat之3——TomCat動靜分離
實現ajp的方法只是將apache反代服務器配置文件中http改爲ajp便可,若是有不須要重定向的資源,能夠用!阻止重定向
初識TomCat之3——TomCat動靜分離
但在此以前須要在tomcat服務器上確認AJP鏈接器處於正常偵聽狀態
初識TomCat之3——TomCat動靜分離
4、補充說明
在使用apache進行反代的時候,開始老是由503報錯頁面,該問題在使用nginx是未發生,查看日誌發現因爲權限緣由沒法與後端服務器創建鏈接
初識TomCat之3——TomCat動靜分離
最後發現是SElinux緣由致使,關閉SElinux,恢復正常
初識TomCat之3——TomCat動靜分離linux

相關文章
相關標籤/搜索