今天臨時被抓去配置一臺windows server 2012。之前沒搞過啊,linux下面各種相對熟悉。windows server什么鬼。于是在阿里云上配綁定公網IP,開放端口。然后丟給其他團隊部署他們的服務。吃完飯回來,哥們兒告訴我,項目部署好了,但是只能localhost和127.0.0.1能訪問。不管是內網IP還是公網IP都不能訪問。
我去,什么問題都找我來了。windows server、IIS,什么鬼?你搞windows web開發的不會,找我還有理了。算了,誰叫我善良呢。
首先看看web服務是否起來,好不容易找到IIS的服務配置的地方,各種停止,重啟。看來服務啟動這塊沒啥問題。然后看看綁定的地址,居然是"*",那應該沒問題啊。通過命令行看看監聽端口和服務器IP。
$ netstat -nao | findstr 7081
很明顯,只有127被綁定了。怎么能是所有呢。然后telnet連一下內網和localhost的端口,內網返回失敗。
$ telnet 172.16.47.121 7081
$ telnet 127.0.0.1 7081
看來問題大概是web服務綁定的IP不對。怎么把內網IP綁定到web服務上呢。在阿里云上找到這個命令。
$ netsh http add iplisten ipaddress=172.16.47.121
把http的監聽地址加上過后,再通過下面這個命令查看,明顯多了內網的IP。
$ netsh http show iplisten
下面再看看7081這個端口監聽時綁定的IP。生效了。
現在打開內網的http鏈接,正常訪問。一陣喜悅在心間流淌。
但是,當用公網IP打開的時候,又不行了。然后再縷一遍。安全策略組開放端口了,那就是防火墻了。關掉防火墻果然生效。最后去添加防火墻規則。
總結下來,遇到這種問題。
- 檢查服務是否起來,起碼localhost對應的端口是通的;
- 查看監聽端口和服務器,最好出現0.0.0.0:7081, 如果沒有,那就把內網IP加上;
- 查看是不是沒有在阿里云的安全策略組里開放相應的端口;
- 查看是不是防火墻的問題,是不是被防火墻限制了。
如果這幾個操作都不能解決你的問題,你還能向阿里云提工單。這個就是花錢買云服務器的好處。起碼有個人能和你一起解決問題。