服务器在公司测试的时候,能够在局域网内正常访问,服务器托管到电信机房后,电信要求服务器和域名必须备案后,才会开通服务器的外网80端口(未备案的外网80端口关闭,外网无法通过域名和ip访问),期间经过了2个月的备案过程,后来电信通知说已经开通了外网80端口了,但是我测试的时候发现外网还是无法访问网站,于是开始有了下面的排除过程,特此记录分享。
第一步:关闭系统防火墙和其他安全软件,测试发现还是无法访问。
第二步:检查服务器上是否80端口被其他进程占用。
主要使用DOS命令如下
netstat -annetstat -aon|findstr "80"tasklist|findstr "2448"
和正常服务器对比后发现少了0.0.0.0:80,多了127.0.0.1:80这个,根据多出的127.0.0.1:80的pid找出了对应的进程是system(正常的服务器0.0.0.0:80根据pid找出的进程也是system),于是我开始猜测,是不是服务器上安装的软件把80端口占用了,于是我开始卸载服务器上安装的没用的软件,如杀毒软件,防火墙软件、QQ等,卸载完毕后,重启服务器,发现还是无法访问。
在网上查找了一段时间后,发现有的说是MS SQL Server 2008的服务SQL Server Reporting Services 占用80端口,服务器安装的是SQLserver2008r2,于是马上停止了这个服务,测试还是无法外网访问。
第三步:排除是服务器上的80端口问题,还是电信没给开通外网的80端口。
在网上查找了1天后,发现有个帖子里面说是电信根本没给开通80端口,于是我测试服务器80端口是否有问题,想到的办法就是把原来的网线拔掉,用另外一条网线,接一台笔记本,确认服务器的局域网ip,如192.168.1.222,然后在笔记本上的开始菜单-》运行-》输入cmd,回车-》然后输入telnet 192.168.1.222 80,如果80端口没有问题,会马上替换为一个新的黑色的窗口,说明连接成功,如果20几秒后,出现 “连接到192.168.1.222...不能打开到主机的连接,在端口80:连接失败”,说明是服务器上的80端口有问题。在笔记本上telnet后发现局域网上连接80端口确实无法连接上,因此断定是服务器的问题了。
第四步:重装IIS。
回想起在服务器备案的过程中,当时有尝试在服务器上安装DNS服务器,结果安装失败,猜测可能是这个原因导致iis的配置被改变了,于是将IIS卸载,然后再重新安装,测试发现网站恢复正常,纠结几天的问题终于解决。
省时省力的解决步骤:
1、拿一条网线,一端接上服务器,一端接上笔记本电脑,局域网内测试服务器80端口是否有问题,详见上面第三步,也可以将网站不绑定域名,直接ip访问,看看网站能否打开;
2、如果确定是服务器80端口无法连接上,尝试上面第二步的端口是否占用,如果还不行,就重装IIS;如果不是服务器80端口问题,咨询电信配置端口映射的技术员,看看是否做了端口映射(服务器有经过路由器的)。
由于经验不足,刚开始一直以为是电信的问题,电信说开通了80端口,一般不会那么没谱,如果他们说开通了,一般就不会是他们的问题了,多找找自己服务器上的问题。
最新发现,有可能是在服务器运行了这句命令后导致
netsh http show iplist #check if the 127.0.01 is listednetsh http add iplisten 127.0.0.1
https://social.technet.microsoft.com/Forums/zh-CN/d719a3f9-56bb-4964-90df-1e21f3d51fd5/-winrm-?forum=windowsserversystemzhchs
解决运行->cmd->输入回车即可:
netsh http delete iplisten ipaddress=127.0.0.1
最近iis 7.5 经常掉线,更新了最新的补丁完美的解决了问题。