Tomcat是Apache基金下的一個很成功的產品,作為Java應用容器被廣泛的使用。當然它不像WebSphere、WebLogic那樣強大,甚至比起JBoss也有所不如,但Tomcat的量級很輕,使用很方便,深入初學者或輕量級應用的追捧。
本文講Tomcat綁定IP地址的問題。默認情況下,Tomcat會監聽8080端口,這個我們都知道。但它會監聽哪些IP呢?默認情況下,它會監聽所有的IP。
下面這一段是從Tomcat默認的server.xml中抽取的Connector這段,我們可以看到沒有關系監聽IP的相關設置。
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
運行/bin/startup.bat來啟動Tomcat后,我們使用Netstat命令來查看一下Tomcat綁定了哪些IP。
D:\splaybow.com\apache-tomcat-6.0.20\bin>startup.bat
Using CATALINA_BASE: D:\splaybow.com\apache-tomcat-6.0.20
Using CATALINA_HOME: D:\splaybow.com\apache-tomcat-6.0.20
Using CATALINA_TMPDIR: D:\splaybow.com\apache-tomcat-6.0.20\temp
Using JRE_HOME: D:\splaybow.com\jdk1.6.0_16
D:\splaybow.com\apache-tomcat-6.0.20\bin>netstat -an | findstr "8080"
TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING
TCP [::]:8080 [::]:0 LISTENING
從上面netstat的結果可以看出,Tomcat監聽了IPv4的0.0.0.0的8080端口,也監聽了IPv6的[::]的8080端口。即可以總結為Tomcat監聽了所有的IP協議的所有IP地址的8080端口。
那么如果我們只想讓Tomcat監聽傳統意義上的本地127.0.0.1的IP地址,那么應該怎么設置呢?且看下面這段配置。
<Connector port="8080" address="127.0.0.1" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
這段Tomcat監聽IP的配置中,可以與上面一段配置做一下比較,我們看到多了一句: address="127.0.0.1"。好,我們來看看運行后結果:
D:\splaybow.com\apache-tomcat-6.0.20\bin>startup.bat
Using CATALINA_BASE: D:\splaybow.com\apache-tomcat-6.0.20
Using CATALINA_HOME: D:\splaybow.com\apache-tomcat-6.0.20
Using CATALINA_TMPDIR: D:\splaybow.com\apache-tomcat-6.0.20\temp
Using JRE_HOME: D:\splaybow.com\jdk1.6.0_16
D:\splaybow.com\apache-tomcat-6.0.20\bin>netstat -an | findstr "8080"
TCP 127.0.0.1:8080 0.0.0.0:0 LISTENING
OK,Tomcat已經如我們所願,只監聽了IP地址127.0.0.1的8080端口了。