我一直在嘗試在Glassfish上大展拳腳,而一件不斷出現的事情就是Glassfish和Apache之間的「如何做」。不幸的是,我還沒有找到你爲什麼要這樣做的描述!爲什麼使用Apache做一些前端Glassfish的設置?
從我的實驗中,Glassfish看起來像一個非常全功能的Web服務器類型的服務;但我可能會錯過很多。因此,前端Glassfish更多的是將其與現有架構集成的解決方案,還是前端(在純Java環境中)提供額外優勢?
我一直在嘗試在Glassfish上大展拳腳,而一件不斷出現的事情就是Glassfish和Apache之間的「如何做」。不幸的是,我還沒有找到你爲什麼要這樣做的描述!爲什麼使用Apache做一些前端Glassfish的設置?
從我的實驗中,Glassfish看起來像一個非常全功能的Web服務器類型的服務;但我可能會錯過很多。因此,前端Glassfish更多的是將其與現有架構集成的解決方案,還是前端(在純Java環境中)提供額外優勢?
它通常用於加快速度。由於apache是一個速度非常快的Web服務器,它用於傳遞靜態內容。像圖片,CSS文件等。 Glassfish在這種情況下提供動態內容(servlet,JSP)。
另外還有一個有效的用例,就是爲什麼我們用Apache來面向Glassfish。在這個例子中,Apache可以作爲反向代理來提高Glassfish的安全性。 RP配置爲只允許將某些URL傳遞給應用程序服務器。例如,您可能會在Glassfish中部署應用上下文/ myApp和/ myPrivApp。在RP服務器中,您只配置/ myApp以傳遞給Glassfish。任何請求/ myPrivApp的人都會看到404'cos,請求在RP級別停止。
在我的一個部署中,我部署了一堆WAR,其中一些用於來自Internet的用戶,一些用於Intranet。我有兩個RP正在運行,一個用於Internet用戶,另一個用於Intranet。我將互聯網RP配置爲只允許經過批准的Internet應用程序的URL通過,而Intranet用戶可以看到所有內容。
希望有所幫助。
使用Apache作爲Glassfish前端的另一個原因是可以在Glassfish集羣中提供負載平衡。有關詳細信息,請參閱http://tiainen.sertik.net/2011/03/load-balancing-with-glassfish-31-and.html。
另一個原因是玻璃魚不能在80端口上運行(很容易),當然不會給它根權。 因此,對於大多數用戶來說,在apache前面運行一個代理(apache,nginx,varnish)是很容易的,並且兩個服務器都可以在普通用戶的情況下運行。
然後,您還可以從前端的某些配置選項中獲得其他優勢。像其他人提到的那樣,例如緩存。
Glassfish的靜態性能與Apache相當,因此額外的層次只會減慢速度。 – Kdeveloper 2010-04-28 22:16:19