2014-09-03 116 views
0

我正在管理提供Web管理頁面並與客戶端應用程序通信的服務器。 我設計了允許公衆通過80端口訪問的Web部分。 但是,我的客戶告訴我他們希望服務器只允許從公司以外的網絡訪問。 如果Tomcat能夠根據IP地址過濾對網頁的訪問權限,我認爲可以這樣做。 但是,我最終未能找到適當的解決方案。我知道Tomcat已經根據Web項目提供了過濾功能。 我想出瞭解決這個問題得到的一種方式,並用它如下: 讓我在server.xml中兩個服務標籤,如關於過濾基於IP地址的網頁訪問方式

<Service name="Catalina"> 
<Connector port="80" ...> 

<Service name="Catalina2"> 
<Connector port="8080" ...> 

再拍克隆的附加服務。然後,我通過防火牆設置阻止所有通過8080端口的外部訪問。這符合我客戶的需求。 但是,我猜這不是一種常見的方式。即使有時,該設置也允許不應發生的外部訪問。最重要的是,從維護的角度來看,這不是一種有效的方式。

無論如何,我不喜歡它。如果有人告訴我方式,將不勝感激。 感謝您閱讀這個問題。

回答

1

IP過濾的第一步是配置您的防火牆/路由器。

通過創建javax.servlet.Filter,您還可以在Servlet容器中實現簡單的IP過濾。

您可以使用通配符(*)映射過濾器以使所有請求都通過它並在過濾器中您可以根據自己的規則檢查客戶端的IP並阻止/拒絕服務請求。

Tomcat還附帶了一些內置的過濾器。你可能會想看看他們:

Apache Tomcat 8 Container Provided Filters

內置的過濾器包括Remote Address FilterRemote Host FilterRemote IP Filter(對於代理)。這些大多數都可以通過正則表達式進行配置,可能足以滿足您的需求。