問題來源
因為經常有各種各樣的大小項目要跑,全部放一個tomcat很慢,所以俺平時喜歡新建80-89這10個tomcat,分別放不同的項目。以前還一直用的好好的,昨天突然發現87端口的tomcat怎么都訪問不了,本來大不了換一個別的端口就了事,但是我覺得問題既然碰到了就要徹底排查,不然下次再碰到就又沒轍了。
這個奇怪的問題糾結了我將近一天左右,記錄下來是為了讓后來人少走坑爹路。如果你想直接知道原因而不管我這沒啥意義的排查過程,直接滾動到最后就可以了。
現象描述
tomcat能正常啟動,也沒提示什么端口沖突,但就是訪問不了,要是頁面提示個什么404啥的也還OK啦,但偏偏提示的是“網絡連接錯誤”!這尼瑪,真是靈異事件啊,然后就嘗試着找原因。
打開瀏覽器只看到這樣的頁面:
排查
首先當然是試一下其它端口,發現86、88端口均正常,唯獨87不正常,然后就查看端口占用情況,仔細對比不同端口啟動時端口占用情況,開始還欣喜的以為發現問題了,因為其它端口啟動時都至少有4個相關記錄,唯獨87端口只有3條,但后來仔細對比來對比去也沒發現什么有用的價值,具體過程就不說了,反正就是沒從這條路上找到原因,貼上一張並沒有什么價值的對比圖:
然后想,tomcat確實成啟動了,只是瀏覽器不知為何訪問不了而已,要不我telnet
試試?然后就試試telnet localhost 87
,發現也沒問題啊,這說明端口確實被tomcat綁定了啊,可為啥就是訪問不了呢?
然后我注意到上面查看端口占用時貌似唯獨87端口沒有類似127.0.0.1:87
地址出現,那是不是直接用ip可以呢?但是http://172.16.4.97:87
、http://localhost:87
、http://127.0.0.1:87
等都試了下還是不行。
再然后,是不是換別人的電腦可以呢?拿一台局域網內的另外PC試了下,還是不行(特別說明:用的是大數字安全瀏覽器)。
再想想,是不是eclipse里面出了什么問題呢?我就直接到外面跑一個tomcat綁定87端口試一下,還是不行!
那又是不是我的tomcat7出了問題呢?然后又換tomcat6綁定一個87端口,再試,還是不行!
我滴個媽呀,這到底是個什么鬼啊[抓狂][抓狂],真是快瘋掉了!
重頭戲來了
就在我一籌莫展的時候,就在一個小時以前,我說,要不我換個瀏覽器試試?總不會跟瀏覽器有關系吧?(回頭想想我也不記得我是怎么想到的)
之前一直用的是“偉大的”大數字極速瀏覽器(為啥說偉大,后面你就懂了),我換了Chrome試了下,雖然也還是訪問不了,但是發現了一個非常關鍵的錯誤信息:ERR_UNSAFE_PORT
你說啥?不安全的端口?咋個不安全了勒?我就郁悶了,順手度娘了一下,果然發現有用信息了,貌似是瀏覽器做了手腳,沒等我仔細看,我就迫不及待的多試了幾個瀏覽器,試了下火狐,嘿嘿,火狐說的更直白一點:
此地址使用了一個通常用於網絡瀏覽以外目的的端口。出於安全原因,Firefox 取消了該請求。這下總算明白了,可以十分確定就是瀏覽器做的手腳!再試了下IE,嘿嘿,我大IE這次竟然很聽話,竟然沒啥問題(難不成說我早用IE就好了?)。。。
總結
糾結了我這么久,原來罪魁禍首竟然是我大數字急速瀏覽器啊,由於Chrome一些限制,一直習慣直接把它當成chrome來用,畢竟內核更新也比較快,也沒管其它太多,誰曾想,哎!不過好在問題原因總算找到了!
解決
啥?你以為這就完了?當然不是,找到問題原因了當然還要找到解決方法。
Chrome
開始菜單搜索“Chrome”,右鍵打開文件位置,選中的是一個快捷方式,右鍵屬性,增加以下參數:
// 表示允許的端口,多個端口逗號分隔
--explicitly-allowed-ports=87,6666,556,6667
示例如下:
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --explicitly-allowed-ports=87,6666,556
再啟動,訪問,發現沒有問題了。
火狐
地址欄輸入about:config
,然后右鍵新建一個字符串鍵,名稱為network.security.ports.banned.override
,內容就是允許的端口,多個端口逗號分隔,如87,6666,556
,然后確定,再試,OK了(貌似無需重啟瀏覽器)。
IE
IE?IE沒問題啊,還解決個球啊~~~
附錄
Google Chrome 默認非安全端口列表,雖然以上方法可以解決問題,但還是盡量避免吧,誰想沒事找麻煩啊:
1, // tcpmux
7, // echo
9, // discard
11, // systat
13, // daytime
15, // netstat
17, // qotd
19, // chargen
20, // ftp data
21, // ftp access
22, // ssh
23, // telnet
25, // smtp
37, // time
42, // name
43, // nicname
53, // domain
77, // priv-rjs
79, // finger
87, // ttylink
95, // supdup
101, // hostriame
102, // iso-tsap
103, // gppitnp
104, // acr-nema
109, // pop2
110, // pop3
111, // sunrpc
113, // auth
115, // sftp
117, // uucp-path
119, // nntp
123, // NTP
135, // loc-srv /epmap
139, // netbios
143, // imap2
179, // BGP
389, // ldap
465, // smtp+ssl
512, // print / exec
513, // login
514, // shell
515, // printer
526, // tempo
530, // courier
531, // chat
532, // netnews
540, // uucp
556, // remotefs
563, // nntp+ssl
587, // stmp?
601, // ??
636, // ldap+ssl
993, // ldap+ssl
995, // pop3+ssl
2049, // nfs
3659, // apple-sasl / PasswordServer
4045, // lockd
6000, // X11
6665, // Alternate IRC [Apple addition]
6666, // Alternate IRC [Apple addition]
6667, // Standard IRC [Apple addition]
6668, // Alternate IRC [Apple addition]
6669, // Alternate IRC [Apple addition]