2017-03-03 276 views
1

對我的服務器的訪問應限於某些遠程主機,並且我想允許Uptimetobot來監視我的服務器。Tomcat 8 RemoteHostValve不起作用

當前正常運行時間機器人總是獲得403禁止。

我加server.xml中看起來是這樣的:

<Server .........> 
    <Service name="Catalina"> 
     <Engine> 
     <Value className="org.apache.catalina.valves.RemoteHostValve" allow=".*\.uptimerobot\.com" /> 
     </Engine> 
    </Service> 

要匹配在此列表中UptimeRobot Whitelist

所有主機但在重新啓動服務器沒有什麼變化,還是403

後我也嘗試使用沒有這樣的通配符的域名:

allow="engine19\.uptimerobot\.com" 
allow="engine19.uptimerobot.com" 

但還是403,

我試圖使hostnamelookups與添加

enableLookups="true" 

<Connector 標籤,但同樣沒有效果。

但在我的日誌中,我發現訪問已解析爲「engine19.uptimerobot.com」,與我的RemoteHost-Pattern匹配。

任何想法,爲什麼它仍然被禁止?

編輯:通過IP與

<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="63\.143\.42\.244"/> 

訪問工作。但我不想在這裏添加ips的全部列表。 RemoteAddrValveRemoteHostValve是否可能令人不安?

回答

0

我已經試過這一點,這個工作對我來說

集useIPVHosts到真正的連接器(裏面server.xml中)。

我使用HTTP連接器,它看起來如下

<Connector port="8080" protocol="HTTP/1.1" 
    connectionTimeout="20000" 
    redirectPort="8443" 
    enableLookups="true" 
    useIPVHosts="true" /> 

Details of attributes can be found here

0

檢查的tomcat /日誌/ local_access_log ......看到用於403

我發現了什麼主機名我們公司的DNS報告了一些大寫的名字,而其他的則全部小寫。 (我)使用正則表達式有區分大小寫:

allow="(?i)engine19\.uptimerobot\.com" 

如果你有兩個RemoteHostValve和RemoteAddValve,都必須允許傳入的主機。如果任何一方不允許,那麼403將被退回。