2011-12-10 101 views
3

我們有一個在weblogic應用服務器上運行的Web應用程序(JQuery和Spring)。應用服務器前面有一個apache http服務器。 所有傳入的請求將通過Web服務器到達應用程序服務器。驗證基於Apache HTTP服務器中的請求標頭的傳入請求

現在我們有一個要求,我們必須驗證傳入http請求頭中的值,如果存在,請求必須發送到應用服務器。如果沒有,我們會阻止請求,並向最終用戶顯示一個靜態錯誤頁面。

我想知道我們是否可以在apache http服務器中實現這個邏輯。請指教。

+0

請閱讀我們的常見問題,http://webmasters.stackexchange.com/faq瞭解更多關於哪些問題適合我們的網站。這是一個很好的問題,它只屬於Stack Overflow。 –

回答

1

你可以用mod_rewrite來做到這一點。你沒有包括你確切的設置,但是如果你有一個mod_proxy類型的配置,你只是想確保重寫不會干擾正常流量的通過。在一般意義上,在你的Apache配置,您可以:

  • 打開改寫
  • 檢查條件
  • 應用基於條件的重寫規則

爲了讓一個真正的一個簡單的例子,如果你在查詢字符串中尋找一個鍵,並且禁止訪問(403),如果它不存在,你會這樣做:

RewriteEngine On 
RewriteBase/
RewriteCond %{QUERY_STRING} !somekey 
RewriteRule ^.*$ - [F,L] 

這可以像你真正想要的那樣複雜,你可以將條件連在一起(隱式AND或顯式或witht他[OR]標誌),你可以提供實際的頁面而不是禁止的消息。

與往常一樣,在修補前備份你的配置文件,使用.htaccess測試它可能是一個好主意(儘管出於性能考慮,最好將它移動到生產負載的實際配置中)。

重寫文件是一個很好的資源太:

http://httpd.apache.org/docs/current/mod/mod_rewrite.html

這真的是相當不錯的文檔。對於一些指針 - 你需要查看標誌([L] = last; [P] =視爲代理請求; [F] =禁止等),你需要一個熟悉正則表達式語法的人