apache配置故障總結

在服務器上配置apache+tomcat 運行環境,這種搭配,網上的文章非常全,但我這次的故障不是這個組合的設置問題,而是apache本身的設置問題。

一般的設置過程如下

1)apache加virtualhost,通過Proxy與tomcat連通

2)tomcat會標記jvmRoute,多個結點使用session時,還會打開Cluster。

3)在apache中增加<Proxy balancer://mycluster>,並對應好tomcat中的jvmRoute。

以上設置好,系統就會正常工作,但如果只是apache,只設置第一步,並用http轉接一樣可以正常工作。

但我遇到的是另一個問題,因爲apache下運行多個virtualHost,因另一個程序測試所以打開了expires_module 模塊,這是用於緩存控制的,一般還會配置<IfModule mod_expires.c>以識別多種文件類型。

這個緩存功能打開後,就讓virtualhost的運行呈現另一種狀態

1)在客戶端的表現,用戶A登錄再退出後,重新打開時會發現仍處於登錄狀態,如果之後有另一用戶B登錄時,在之前用戶A使用過的功能裏看到的仍是A的信息。感覺就是session完全亂了,但這時強制刷新一下,用戶信息就以最後一個登錄的用戶爲準。

2)服務器virtualHost中有ProxyPassReverseCookieDomain和ProxyPassReverseCookiePath屬性,這兩個屬性怎樣設置都不會影響到 1 中客戶端的表現。apache因爲緩存設置,基本可以不像virtualHost繼續請求。

由以上的表現可以看出,virtualHost本身是做代理的,用於訪問多個站點,但一旦啓用緩存模塊,virtualHost就變成了緩存服務器,除非用戶強制請求新版本的內容,否則apache始終使用緩存,而這個緩存的判斷過程還會因瀏覽器的不同有一定差異(IE在“始終取最新版本”設置時,有時會正常加載,firefox即使重啓瀏覽器也取不到新版本,只能清除緩存,其它瀏覽器未測試),這時不只是session,包括表單字段都是有緩存效果的。

至於緩存模塊的詳細設置我還未仔細研究,也歡迎大家拍磚,但對於不熟悉或新手,本人強烈建議不要使用緩存模塊,這種緩存已經包含對動態請求內容的緩存。

故障追蹤和恢復過程:

從客戶反饋(用戶登錄信息混亂)--檢查程序本身邏輯--virtualHost的相關設置--apache,tomcat(session,cookie設置)--最終定位到expires_module .

唯一值得安慰的是,單獨運行tomcat程序時,程序表現完全正常,不論用戶怎麼操作都沒有問題,所以很快定位到apache,但從virtualHost到expires_module ,則是用一個乾淨的apache重新配置才發現的。

最後,希望配置apache+tomcat的朋友們能從這個故障中得到幫助,也歡迎高手多提供有關apache中緩存模塊的相關知識。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章