本文介紹無法訪問ECS實例中的服務的排查方法。
操作場景
無法訪問ECS實例中的服務可能有以下原因:
可能原因 | 排查方案 |
ECS實例的安全組未開放相應端口 | |
ECS實例中,該服務未啟動/開啟或服務對應端口未被監聽 | |
ECS實例內防火墻設置錯誤 |
本文以排查無法訪問ECS實例中的Nginx服務(默認端口為80)為例,排查其他服務時,請替換命令中的服務名和對應的端口。
檢查ECS實例安全組規則
- 登錄ECS管理控制臺。
- 在左側導航欄,選擇 。
- 在頂部菜單欄左上角處,選擇地域。
在ECS實例列表頁面,單擊目標ECS實例ID。
在ECS實例詳情頁面,單擊安全組頁簽。
在安全組列表頁簽下,單擊安全組ID。
在安全組規則頁面,查看入方向規則是否開放80端口。
未開放80端口,請添加入方向為80的安全組規則。具體操作,請參見添加安全組規則。
已開放80端口,請執行檢查服務狀態及端口監聽狀態。
檢查服務狀態及端口監聽狀態
Linux實例
本操作以CentOS 7.9為例,其他版本的Linux系統操作可能有所差異。
遠程連接Linux實例。
具體操作,請參見通過密碼或密鑰認證登錄Linux實例。
執行如下命令,查看Nginx服務狀態。
systemctl status nginx
如果返回類似如下信息,則說明Nginx已經啟動。
如果未開啟,請執行如下命令,啟動Nginx命令。
systemctl start nginx
執行如下命令,查看端口是否正常被監聽。
netstat -an | grep 80
如果返回如下信息,則說明80端口被正常監聽,請執行檢查ECS防火墻設置。
如果返回的不是以上信息,表示80端口未處于監聽狀態。說明該端口可能被其他端口占用,您需要修改該端口。具體操作,請參見如何修改Nginx服務端口監聽地址。
Windows實例
本操作以Windows Server 2012為例,其他版本的Windows Server系統操作類似。
遠程連接Windows實例。
具體操作,請參見通過密碼或密鑰認證登錄Windows實例。
選擇開始>運行,輸入
service.msc
,單擊確定,打開服務。查看nginx狀態。
如果nginx無狀態,請右鍵單擊該nginx服務,然后單擊啟動(S)。
如果nginx狀態為正在運行,請繼續執行步驟4。
在Windows PowerShell中執行如下命令,查看端口是否正常被監聽。
netstat -ano | findstr "80"
如果返回如下信息,則說明80端口被正常監聽,請執行檢查ECS防火墻設置。
如果返回的不是以上信息,表示80端口未處于監聽狀態。說明該端口可能被其他端口占用,您需要修改該端口。具體操作,請參見如何修改Nginx服務端口監聽地址。
檢查ECS防火墻設置
Linux實例
本操作以CentOS 7.9為例,其他版本的Linux系統操作可能有所差異。
遠程連接Linux實例。
具體操作,請參見通過密碼或密鑰認證登錄Linux實例。
執行如下命令,查看防火墻狀態。
systemctl status firewalld
如果回顯中出現
Active: inactive (dead)
信息,說明防火墻為關閉狀態,無需再進行任何操作。如果回顯中出現
Active: active (running)
信息,說明防火墻已開啟,請繼續執行步驟3。
執行如下命令,查看防火墻中已開放的端口。
firewall-cmd --list-all
如果回顯中出現ports: 80/tcp信息,說明防火墻規則中已放行80端口,無需再進行任何操作。
如果回顯中沒有ports: 80/tcp信息,請執行如下命令,放行80端口。
firewall-cmd --zone=public --add-port=80/tcp --permanent
若返回結果為
success
,表示已經放行TCP 80端口。
Windows實例
本操作以Windows Server 2012為例,其他版本的Windows Server系統操作類似。
遠程連接Windows實例。
具體操作,請參見通過密碼或密鑰認證登錄Windows實例。
單擊左下角的圖標,打開服務器管理。
選擇右上角的工具(T)>高級安全 Windows防火墻。
查看防火墻狀態。
如果防火墻處于關閉狀態,無需進行任何操作。
如果防火墻狀態為已啟用,請繼續以下操作。
在高級安全 Windows防火墻頁面,單擊入站規則。
查看Windows 遠程管理-兼容模式(HTTP-In)的狀態。
如果協議已啟動,無需進行任何操作。
如果該規則未啟用,請右鍵單擊該規則,然后單擊啟用規則(E)。