Windows Server服務器下Apache+JBoss實現請求轉發


主題

     本文主要講述的是在Window Server服務器下采用Apache+JBoss服務器的模式實現請求的轉發,Apache主要實現轉發服務器的功能,真正的請求處理由JBoss服務器進行。在這種模式下項目使用Java編程。

集成原因分析

      采用着用模式主要的目的是將可用的服務器全部使用上,采用一個域名進行訪問到所有的項目,當然也可以將所有的項目放到一個JBoss里面,然后通過域名訪問,但是這樣做的后果是JBoss占用服務器內存狂大,服務器運行一段時間后會自動關掉,明顯的表現方式是不能繼續提供訪問服務,而且這樣做還有一個很大的隱患是JBoss服務器的配置端口會暴漏在網絡上,雖然可以實現加入訪問密碼等進行控制,但是會招來不必要的攻擊。

      目前,在我所在的環境中,有5台服務器,每台服務器上面都掛着1-2個Java Web項目,其中有一台服務器擁有域名,因此將此服務器作為轉發服務器。經過一段時間的運行,除個別問題需要注意外,服務器運行表現良好。此種模式下可以隨時添加服務器集群功能。

安裝Apache服務器軟件

本系統采用的是httpd-2.2.21-win32-x86-openssl-0.9.8r版本,這個版本在官網上都有下載。一路的安裝過程都采用默認,下面的部分需要注意。

image

     上面需要填寫三個信息,第一個是域名,第二個是服務器名稱,第三個是服務器管理員的電子郵箱地址,填寫都有相應的示例,注意端口要選擇80,因為域名訪問的默認端口是80。

有的服務器是默認開啟IIS服務的,如果出現沖突,你們請關閉IIS服務,或者將其監聽端口改為非80即可。

配置Apache服務器

      Apache服務器的配置文件位於/conf文件夾下面,文件名稱為httpd.conf。這個是Apache服務器的主要配置文件,關於Apache的配置文件說明,請查詢網上的相關信息,在這里不做重復說明了。

在配置文件中添加下面兩個包(如果能查找到這兩個包,那么請去掉其前面的#(注釋))。

#在這里加上轉發的配置
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

然后在該文件中包含一個專門配置轉發的文件

#加上配置相應的ip地址的配置
Include conf/server_list.conf

這個配置的意思是要包含一個配置文件server_list.conf,其和httpd.conf位於同一目錄中。

在這個文件中添加一個轉發的配置,例如下:

#信息管理系統
ProxyPass /babu http://172.16.13.36:8080/babu
ProxyPassReverse /babu http://172.16.13.36:8080/babu
#信息管理系統
ProxyPass /longsheng http://172.16.13.35:8080/longsheng
ProxyPassReverse /longsheng http://172.16.13.35:8080/longsheng

配置說明:

      ProxyPass和ProxyPassReverse是成對出現的,如果只有ProxyPass則在發出請求后網頁會調轉到服務器的真實地址中去,而服務器的真實地址又在內網中,因此造成無法訪問。通過這種配置,外網訪問項目的時候根本不知道其訪問的不是真正的服務器,而是一台代理服務器,這種關系對應用戶來說是透明的。
配置完畢后,重啟Apache服務器,看下結果吧。

注意的問題

     在配置Apache服務器的過程中如果要檢查某一項的配置是否正確,可以使用Apache自帶的檢查工具,Test Configuration工具,運行這個工具,如果沒有問題會有一個DOS頁面一閃而過,如果有錯誤則會提示具體的錯誤信息。

image

在編寫Java Web項目的過程中遇到的一個應該注意的問題是,在使用MyEclipse編寫網頁時會自動生成如下的信息:

image

 

     即basePath的獲取,因為jsp是在服務器端運行完成的,因此,此段代碼執行后basePath被替換為服務器真正的地址,此網頁在內網沒有問題,因為內容可以直接訪問真實的服務器,如果在外網訪問,你們就會出現訪問失敗的情況,因為basePath運行后顯示的是內網的地址,而不是代理服務器的地址或者域名。

解決辦法:

     使用path代替basePath,因為path沒有地址信息和協議信息,只是相對的地址,如果一定要在頁面中顯示地址信息,也是可以的,只不過要在后台獲取地址的時候使用一些特殊的手段,因為服務器請求經過幾次轉發后,內次轉發都會在地址頭部寫上一次地址,因為最后一次轉發的地址就是真實的地址,這是對於使用地址訪問的來說的。如果使用域名訪問,你們建議使用Javascript手段獲取訪問協議個訪問域名地址等信息來組成最終的basePath信息。

總結

      通過Apache和JBoss的組合,可以充分利用內網服務器的資源,降低單一服務器的訪問壓力,甚至可以使用普通的主機來組成轉發群,在本文中只是簡要的說明了Apache的轉發配置和需要注意的一些問題,有關Apache的優化配置說明如果哪位同鞋遇到配置問題了,那么我就把我的配置貼出來跟你大家分享。

現在網上的配置大多數是針對Linux/unix操作系統的,希望我的這篇文章能夠對那些在Windows下迷茫的同鞋能有所幫助。

by Rush

Date : 2012年2月14日 12:00:31


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM