2012-10-18 73 views
1

我在Spring JSF Web應用程序中配置了使用JBoss6的https並且它在整個站點上工作,但是我只需要https即可訪問特定的文件夾和文件。在我的web.xml中,我已經這樣配置了它在JBoss Spring JSF Web應用程序中配置https

文件夾特定的代碼塊可以工作,但訪問該頁面後如果我通過單擊頁面中的鏈接返回到正常的http頁面,它也會以https

<security-constraint> 
    <web-resource-collection> 
     <web-resource-name>secured folder</web-resource-name> 
     <url-pattern>/myfolder/*</url-pattern> 
    </web-resource-collection> 
    <user-data-constraint> 
     <transport-guarantee>CONFIDENTIAL</transport-guarantee> 
    </user-data-constraint> 
</security-constraint> 

下面的代碼工作,如果我把這只不帶文件夾特定的代碼塊,它允許HTTPS進行整個網站。

<security-constraint> 
    <web-resource-collection> 
     <web-resource-name>Protected Area, so redirect to HTTPS</web-resource-name> 
      <url-pattern>/*</url-pattern> 
     </web-resource-collection> 
     <user-data-constraint> 
      <transport-guarantee>CONFIDENTIAL</transport-guarantee> 
     </user-data-constraint> 
</security-constraint> 

有沒有其他的東西我一直想念,以實現這一目標?

回答

0

我過去所做的就是將一個Apache Web服務器放在JBoss之前,並在其上安裝和配置SSL。然後,您可以輕鬆配置多個URL和上下文路徑以轉發到不同的內容。在生產環境中使用此方法有許多優點。

  1. 輕鬆使用輕量級和簡單的Apache配置來建立公共上下文路徑。

  2. 反向代理 - 您可以使用mod_jk Apache插件以這種方式輕鬆設置反向代理。端口80和443只對您的Web服務器開放,這意味着您的JBoss服務器可以完全置於防火牆之後,無法從外部訪問。只有Web服務器可以在您選擇的AJP端口上與應用程序服務器進行通信。

  3. 發送靜態內容 - 另一個額外的好處是,您可以將所有靜態網頁內容(例如圖像,樣式表,JavaScript,Flash對象等)放置在可由Apache,同時將不同的上下文路徑轉發到JBoss上的所有動態JSF或JSP內容。這有助於減少應用程序服務器上的冗餘負載。

  4. 負載平衡 - 使用mod_jk甚至mod_proxy Apache插件,可以將Apache配置爲充當JBoss集羣的負載均衡器。它將能夠評估單個JBoss節點的健康狀況,並對哪個應用程序服務器轉發動態內容請求做出明智的決定。

所有這些與JBoss上的HTTPS和HTTP請求有什麼關係?這顯然很難做到,我從多人那裏聽到過。這樣做將允許您輕鬆設置一個URL和上下文路徑以僅用於HTTPS動態內容,而另一個用於提供HTTP靜態Web內容。下面的博客文章是一個很好的教程,讓你開始。

http://technicalmumbojumbo.wordpress.com/2009/04/21/configuring-http-and-https-on-jboss-server/

+0

我該如何將Apache Web服務器放在前面?我之前沒有這樣做過,我們如何爲指定的一個應用程序一起運行兩臺服務器 – Swarne27