前段時間在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也可以打開網站了。