本文介紹無法訪問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連接埠未處於監聽狀態。說明該連接埠可能被其他進程佔用,您需要修改該連接埠。
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連接埠未處於監聽狀態。說明該連接埠可能被其他進程佔用,您需要修改該連接埠。
檢查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)。