Tomcat的managerhost頁面403的原因和解決辦法
版本:Tomcat 8.5.8
問題:新安裝的tomcat,用其他機(jī)器訪問tomcat的Server Status、Manager App、Host Manager三個(gè)頁面均顯示403(本機(jī)訪問沒有問題),conf/tomcat-users.xml里已添加配置:
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="tomcat" password="qazwsx" roles="manager-gui,admin-gui"/>
重啟之后,還是403,甚至在嘗試使用多種解決方法的時(shí)候還出現(xiàn)過404(原因不明)
查找網(wǎng)上解決辦法無果,大部分網(wǎng)上的文章都只提到了在tomcat-users.xml里添加上面的語句,無法解決,通過查閱官方文檔,英文真的爛(用翻譯軟件,看得一知半解),終于找到真正原因所在。
打開webapps下的host-manager和manager,都有一個(gè)共同的文件夾META-INF,里面都有context.xml,這個(gè)文件的內(nèi)容是:
<Context antiResourceLocking="false" privileged="true" >
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127.d+.d+.d+|::1|0:0:0:0:0:0:0:1" />
</Context>
通過查看官方文檔,知道,這段代碼的作用是限制來訪IP的,127.d+.d+.d+|::1|0:0:0:0:0:0:0:1,是正則表達(dá)式,表示IPv4和IPv6的本機(jī)環(huán)回地址,所以這也解釋了,為什么我們本機(jī)可以訪問管理界面,但是其他機(jī)器確?403。
找到原因了,那么修改一下這里的正則表達(dá)式即可,比如我們只允許內(nèi)網(wǎng)網(wǎng)段192.168.88訪問管理頁面,那么改成這樣就可以:
<Context antiResourceLocking="false" privileged="true" >
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="192.168.88.*" />
</Context>
修改完畢,關(guān)閉瀏覽器,重新打開tomcat,問題解決!