前段时间在Windows服务器上利用IIS部署了.NET Core项目,在服务器浏览器上可以通过localhost访问,但是在外网无法通过服务器IP:端口号的形式访问该网站。记录下解决的过程。
一、环境
1、阿里云服务器
我用的是阿里云服务器,装的镜像是Windows服务器,版本如下:
阿里云已经开放了8001端口。
2、IIS配置,如下图:
在服务器上可以通过http:localhost:8001访问网站,但是在外部通过ip(公网IP39.105.99.43):端口号的方式无法访问
二、问题及解决
从环境的配置中可以看出,公网ip有了,端口号在ESC控制台中已经开放,但是在外网浏览器(接下来称本地吧)中输入:http:39.xx.xx.43:8001却打不开网站,emmm,接下来看看必要的查找问题的流程
1、ping下公网IP
本地打开Windows powershell,看看能不能ping通公网IP
从上图可以看出是OK的
2、telnet 测试端口号
通过telnet ip 端口号,测试下端口号是否开放
从上图可以看出居然无法联通,明明端口号已经在阿里云ecs中开放了啊,难道是Windows服务器本身的问题?肯定是先从Windows服务器防火墙入手检查了
3、关闭Windows防火墙
从上面的检测发现能联通公网IP,却无法入站,有可能是防火墙的限制,那么我们现将Windows服务器上的防火墙关掉,试下
在本地再试下能不能联通
emmmm还是不行
4、入站规则
关闭防火墙也不行,还是先把防火墙启动吧。网上搜了搜说是需要在防火墙中添加入站规则(很好奇关闭防火墙都不管用,添加入站规则就可以,哎,以后再研究吧),按照网上的步骤添加入站规则,配置步骤如下:
通过命令打开控制面板,定位到防火墙配置页面:
打开防火墙的高级配置,点击入站规则,按照如下截图进行一步一步的操作即可:
在本地测试一下发现仍然没有解决问题,擦擦擦,静下心来想想该做的都做的,咋还不行呢,后来灵光一闪,Windows服务器默认会添加几个入站规则,现在本地试试Windows服务器默认的端口能不能联通,比如端口号21、80,效果如下:
回车:
哈哈,居然能联通,再来试试端口号21,回车后的结果如下:
也能联通,而且还告诉我们该端口号已经被FileZilla使用,嘻嘻。接下来就有思路了,为啥我添加的入站规则不能联通,Windows默认的入站规则可以呢,先看看人家的入站规则属性如下:
多看了几个,发现只有本地端口有所不同,有选择“特定端口”的,也有选择“所有端口的”,其他的配置都差不多。抱着试试的态度,修改一下8001入站规则属性,就改本地端口属性,每个选项都试试,最终试了下“所有端口”选项,发现可以了,本地可以联通8001端口号了。
虽然还不是特别了解啥原因,但是问题解决了,在外网浏览器中输入http:39.105.99.43:8001也可以打开网站了。