如果遇到IIS服务器的网站无法访问,并在IE/EDGE浏览器中显示无法显示此页的问题,一般情况下是有多种可能因素,我遇到的情况是由于服务器网络配置错误,造成系统没有正确监听公网IP和80端口,因为这样才导致了IIS服务器根本没办法与公网连接!
我排查了各种可能存在的因素:包括防火墙配置,网络被运营商封堵,WEB服务器配置错误等。另外我还和域名商确定过域名解析是没问题的,网站也成功备案,IIS上也对域名进行了绑定。
后面在阿里云后台提交了工单,和他们的售后工程师沟通后,才找出是自己服务器的IP和端口监听配置错误。具体的症状如下,在IIS中如果不设置绑定的域名主机和IP,使用默认的localhost或127.0.0.1可以正常打开网站,如果使用公网IP和域名绑定,就无法打开网站!
关于这个问题各个浏览器提示大体有这几种:
解决方法是使用NetSH(Windows的网络配置命令行工具),修改正确的监听端口和IP地址。具体操作步骤如下:
首先打开CMD命令提示符,可以通过Win+R打开运行窗口后输入cmd,在cmd中输入命令:
netstat -ano | findstr 80
这条命令主要是用于查看80端口的监听情况,我的情况如下(由于是新服务器,只有一条记录):
这里就是问题所在,80端口只监听本地127.0.0.1的回环地址,也就是公网IP并没有被服务器列入监听(外网无法访问)!正确的应该是0.0.0.0:80,表示80端口被所有IP/网卡监听(内外网地址都可以访问):
那么接下来就要使用netsh命令进行修改了,先在cmd控制台输入:
netsh http show iplisten
先查看当前IP地址的监听情况,默认的监听列表是空白的,如果有显示出IP地址,就要检测是否设置有误。上图中我的配置就是有问题的,不应该只侦听127的地址!
如果是专业的服务器运维人员,这边根据自己网络环境进行修正就可以。像我这种半桶水的解决方法就是删除掉所有的IP侦听,这样服务器就会默认监听所有的IP。我的情况只要删除只本地回环地址就可以了:
netsh http delete iplisten ipaddress=127.0.0.1
其实可以仔细回想下自己是否有运行过netsh http add iplisten命令,这就是问题的根源。删除掉其他的侦听IP后,服务器就会重新侦听所有内外网的IP,最好重启下服务器!重启后网站即可正常访问了。
版权声明:本文由十有三创作,采用知识共享许可协议:署名-相同方式共享 4.0 国际(CC BY-SA 4.0)。欢迎转载本文,转载请务必署名-保留作者名称及出处:https://shiyousan.com/post/636323595672171015。