免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Apache整合Tomcat實(shí)現(xiàn)靜態(tài)資源與動(dòng)態(tài)資源分離(二)

這幾天又研究了一下,有新的發(fā)現(xiàn),趕緊記錄下來。


其實(shí)可以通過Apache的代理功能來實(shí)現(xiàn)靜態(tài)資源和動(dòng)態(tài)資源的分離。


假設(shè)我的web項(xiàng)目中有3個(gè)文件夾,分別用來存放不同的靜態(tài)資源,如:
1) dojo_lib: 存放所有dojo文件(這個(gè)比較大)
2) css: 存放項(xiàng)目應(yīng)用的css樣式
3) pages: 存放項(xiàng)目的頁面文件


現(xiàn)在我想把dojo_lib放在Apache服務(wù)器里,不跟web項(xiàng)目一起部署到tomcat。而css和pages則跟項(xiàng)目一起部署到tomcat。當(dāng)要請(qǐng)求dojo_lib里的文件時(shí),Apache服務(wù)器直接處理請(qǐng)求;而當(dāng)請(qǐng)求css或pages里的文件時(shí),Apache服務(wù)器把請(qǐng)求轉(zhuǎn)給tomcat處理。


好了,怎樣實(shí)現(xiàn)呢?方法如下:


第一步:

準(zhǔn)備兩個(gè)FQDN。一個(gè)用來訪問靜態(tài)資源,一個(gè)用來訪問web項(xiàng)目。(還沒想到怎樣才可以只用一個(gè)FQDN來實(shí)現(xiàn)。。)

FQDN1:static.webapp.com // 用來訪問靜態(tài)資源

FQDN2:webapp.com // 用來訪問web項(xiàng)目

(注:這兩個(gè)FQDN都指向同一個(gè)IP,即本地服務(wù)器IP)


第二步:

寫一個(gè) "static-resource-proxy.conf" 文件,內(nèi)容如下,然后include到httpd.conf里。

  1. # 要載入這兩個(gè)modules  
  2. LoadModule proxy_module modules/mod_proxy.so  
  3. LoadModule proxy_http_module modules/mod_proxy_http.so  
  4.   
  5. <VirtualHost *:80>  
  6.     # DocumentRoot, 存放靜態(tài)資源的地方  
  7.     DocumentRoot C:/Project-Tools/httpd-2.4.18-x64/Apache24/htdocs/webapp/  
  8.     ServerName static.webapp.com # 訪問靜態(tài)資源的FQDN  
  9.     ServerAlias static.webapp.com  
  10. </VirtualHost>  
  11.   
  12. <VirtualHost *:80>  
  13.     ServerName webapp.com # 訪問項(xiàng)目的FQDN  
  14.     ServerAlias webapp.com  
  15.     ErrorLog logs/webapp-error.log  
  16.     CustomLog logs/webapp-access.log common  
  17.   
  18.     # 下面是重點(diǎn)  
  19.     ProxyRequests off  
  20.     ProxyPass /dojo_lib/ http://static.webapp.com/dojo_lib/  
  21.     ProxyPass /css/ http://webapp.com:8001/project_name/css/  
  22.     ProxyPass /pages/ http://webapp.com:8001/project_name/pages/  
  23.     ProxyPass / http://webapp.com:8001/project_name/  
  24.     ProxyPassReverse / http://webapp.com:8001/project_name/  
  25.   
  26.     # 非常重要,用于保持每個(gè)request都在同一個(gè)session里  
  27.     ProxyPassReverseCookiePath /project_name/ /  
  28. </VirtualHost>  


第一個(gè)ProxyPass,意思是,若請(qǐng)求的開頭是/dojo_lib/的話,則這個(gè)請(qǐng)求不會(huì)交給應(yīng)用服務(wù)器(即tomcat)處理,而是由Apache自己處理。Apache會(huì)把這個(gè)請(qǐng)求轉(zhuǎn)換為一個(gè)代理請(qǐng)求。例如,如果原請(qǐng)求是http://webapp.com/dojo_lib/dojo/dojo.js,Apache會(huì)把它轉(zhuǎn)換為代理請(qǐng)求http://static.webapp.com/dojo_lib/dojo/dojo.js。


第二個(gè)ProxyPass,同理,若請(qǐng)求的開頭是/css/(如http://webapp.com/css/app.css),Apache會(huì)把它轉(zhuǎn)換為一個(gè)代理請(qǐng)求(http://webapp.com:8001/project_name/css/app.css)。注意看這個(gè)代理的URL,它是把請(qǐng)求交給tomcat處理,直接訪問web項(xiàng)目內(nèi)部的資源。(我的tomcat端口是8001)


第三個(gè)ProxyPass,同上。


第四個(gè)ProxyPass,這個(gè)是什么意思呢?它的意思是,把http://webapp.com/ 下的所有請(qǐng)求都交給tomcat處理,轉(zhuǎn)換為http://webapp.com:8001/project_name/ 下的對(duì)應(yīng)請(qǐng)求。例如,如果原請(qǐng)求是http://webapp.com/index.do,Apache會(huì)把它轉(zhuǎn)換為http://webapp.com:8001/project_name/index.do。


關(guān)于這四個(gè)ProxyPass的順序,前三個(gè)順序無所謂,但第四個(gè)一定要放在最后。我的猜測是,Apache在匹配請(qǐng)求的時(shí)候,是從上到下逐個(gè)匹配的。一旦找到對(duì)應(yīng)請(qǐng)求,就馬上觸發(fā)代理規(guī)則,并停止向下匹配。而第四個(gè)可匹配的范圍最大,所以要放最后。


第四個(gè)ProxyPass會(huì)導(dǎo)致一個(gè)非常好的結(jié)果,那就是可以隱藏tomcat的端口和項(xiàng)目名。想想,當(dāng)只有tomcat時(shí),我們?cè)L問項(xiàng)目時(shí)要指定端口和項(xiàng)目名,如http://webapp.com:8001/project_name/index.do?,F(xiàn)在有了Apache代理,我們只需要訪問http://webapp.com/index.do就可以了。


補(bǔ)充:

其實(shí)之前也嘗試過利用Apache的代理來轉(zhuǎn)發(fā),但一直不成功。原因是當(dāng)時(shí)我的代理配置是這樣的:

  1. # 要載入這兩個(gè)modules    
  2. LoadModule proxy_module modules/mod_proxy.so    
  3. LoadModule proxy_http_module modules/mod_proxy_http.so    
  4.     
  5. <VirtualHost *:80>    
  6.     # DocumentRoot, 存放靜態(tài)資源的地方    
  7.     DocumentRoot C:/Project-Tools/httpd-2.4.18-x64/Apache24/htdocs/webapp/    
  8.     ServerName static.webapp.com # 訪問靜態(tài)資源的FQDN    
  9.     ServerAlias static.webapp.com    
  10. </VirtualHost>    
  11.     
  12. <VirtualHost *:80>    
  13.     ServerName webapp.com # 訪問項(xiàng)目的FQDN    
  14.     ServerAlias webapp.com    
  15.     ErrorLog logs/webapp-error.log    
  16.     CustomLog logs/webapp-access.log common    
  17.     
  18.     # 下面是重點(diǎn)    
  19.     ProxyPass /dojo_lib/ http://static.webapp.com/dojo_lib/    
  20.     ProxyPass /css/ http://static.webapp.com/css/    
  21.     ProxyPass /pages/ http://static.webapp.com/pages/  
  22.  </VirtualHost>    

我把css和pages的請(qǐng)求都代理出去了,不交給tomcat。其實(shí)這沒有問題。最大的問題是我沒有配置第四個(gè)代理。所以我訪問項(xiàng)目時(shí)發(fā)送的請(qǐng)求是http://webapp.com:8001/project_name/index.do。(靜態(tài)資源的訪問地址是http://webapp.com:8001/project_name/dojo_lib/dojo/dojo.js),代理不成功。為什么?因?yàn)槲以L問的端口(注意是在瀏覽器輸入的端口,不是代理轉(zhuǎn)發(fā)后的端口)是8001,不是80。而Apache只監(jiān)聽80端口,所以根本沒有觸發(fā)到Apache的代理規(guī)則...

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Apache、Tomcat整合環(huán)境搭建
Apache與Tomcat的三種連接方式介紹
Apache HTTP Server 與 Tomcat 的三種連接方式介紹
使用apache反向代理功能連接Tomcat
Apache通過http
用mod
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服