今天被人問了一個“奇怪”的問題,說本地服務開啓,自己能訪問,別人訪問不了,遇到這種問題,一般是防火牆規則導致的,所以我先建議關閉了防火牆,結果還是不能正常訪問,於是又想起了mysql在開啓IPV6的時候,如果想監聽IPV4端口需要在配置文件中單獨配置,問題終於解決。
第一,查看本地的監聽【windows下】:
C:\Users\Long80A>netstat -an | findstr 80
TCP 10.250.2.190:49328 202.39.170.15:8080 ESTABLISHED
TCP 10.250.2.190:51572 202.226.89.167:80 CLOSE_WAIT
TCP 10.250.2.190:54734 202.79.157.251:80 ESTABLISHED
TCP 10.250.2.190:54881 202.176.31.204:80 CLOSE_WAIT
TCP 10.250.2.190:55219 202.60.153.98:80 ESTABLISHED
TCP 10.250.2.190:55803 202.28.226.40:80 CLOSE_WAIT
TCP 10.250.2.190:55854 202.188.46.24:80 TIME_WAIT
TCP 10.250.2.190:55855 202.188.46.24:80 TIME_WAIT
TCP [::]:80 [::]:0 LISTENING
TCP [::]:8009 [::]:0 LISTENING
監聽的TCP [::]:80 [::]:0 LISTENING顯示監聽了IPV6格式的端口。
【查看本地是否開啓了IPV6,ipconfig /all,如果此命令中有本地鏈接 IPv6 地址. . . . . . . . : fe80::d423:34af:7a7c:c995%10,說明已經開啓了IPV6】
第二,修改tomcat的配置文件:
找到:
<Connector port="80" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />
修改爲:
<Connector port="80" maxHttpHeaderSize="8192"
address="0.0.0.0"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />
第三,重啓tomcat查看監聽:
C:\Users\Long80A>netstat -an | findstr 80
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING
第四,添加一個允許訪問80端口的防火牆規則
開始-控制面板-防火牆-高級設置-入站規則-新建規則,選擇端口,TCP,80,然後一直下一步。
第五,從其他機器就能正常訪問了
curl -I http://10.250.2.190
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=ISO-8859-1
Transfer-Encoding: chunked
Date: Wed, 20 Nov 2013 02:48:33 GMT