今天临时被抓去配置一台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加上;
- 查看是不是没有在阿里云的安全策略组里开放相应的端口;
- 查看是不是防火墙的问题,是不是被防火墙限制了。
如果这几个操作都不能解决你的问题,你还能向阿里云提工单。这个就是花钱买云服务器的好处。起码有个人能和你一起解决问题。