首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

自建服務器網站本機可訪問外網不可訪問?排查清單:防火牆、端口映射、綁定地址

     編輯:程式設計綜合問答

現象複現

  • 服務器本機 localhost、域名 均可打開網站。
  • 外網電腦 ping 域名、ping 服務器公網 IP 通。
  • 外網瀏覽器訪問域名 **無法打開**(超時/拒絕連接)。

核心判斷:TCP 連接未建立(非 DNS 問題)

ping 通 = ICMP 達 + 域名解析正常。
瀏覽器打不開 = **TCP 80/443 端口不可達**。

四大排查維度(按概率排序)

1. 服務器防火牆未放行 80/443(最常見)

# CentOS/RHEL 7+ (firewalld)
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

# Ubuntu (ufw)
ufw allow 80/tcp
ufw allow 443/tcp
ufw reload

# 萬網/阿里雲/騰訊雲/華為雲:控制台「安全組」/「防火牆」需單獨放行 80/443 入站!

2. Web 服務綁定地址錯誤(僅監聽 127.0.0.1)

# Nginx 錯誤配置
server {
    listen 127.0.0.1:80;  # ❌ 僅本機可訪問
    ...
}
# 正確
server {
    listen 80;            # ✅ 監聽所有接口 0.0.0.0:80
    # 或
    listen 0.0.0.0:80;
    ...
}

# Apache (httpd.conf)
Listen 127.0.0.1:80  →  Listen 80

# Java (Spring Boot / Tomcat)
server.address=0.0.0.0  # application.properties
# 或 server.xml: 

3. 端口映射/NAT 未配置(服務器在內網/雲服務器有公網 IP 但需映射)

  • 家庭/企業內網服務器:路由器需設置 **DMZ 主機** 或 **端口映射**(外網 80 → 內網服務器 IP:80)。
  • 雲服務器(ECS/CVM):**安全組規則**必須放行入站 80/443,且實例綁定彈性公網 IP(EIP)。

4. 域名解析生效延遲(新域名/剛修改解析)

  • 萬網/阿里雲 DNS 宣稱秒級生效,實際受**本地 DNS 緩存、運營商緩存**影響,可能 10-30 分鐘甚至更久。
  • 驗證:nslookup 域名、dig 域名 檢查是否解析到正確公網 IP。
  • 臨時繞過:修改本地 hosts 文件映射域名 → 公網 IP,若能訪問則為 DNS 緩存問題。

快速驗證命令

# 服務器上:確認進程監聽
netstat -ntlp | grep :80
ss -ntlp | grep :80

# 外網機器:測試 TCP 連通性
telnet 公網IP 80
nc -zv 公網IP 80
curl -I https://公網IP  # 直接用 IP 測試,排除 DNS

# 檢查防火牆狀態
firewall-cmd --list-all
ufw status
iptables -L -n

總結

本機可訪問、外網不可訪問,**90% 是防火牆(含雲廠商安全組)未放行 80/443,或 Web 服務綁定了 127.0.0.1**。依次排查:雲控制台安全組 → 服務器防火牆 → Web 服務 listen 地址 → 端口映射 → DNS 緩存,通常 5 分鐘內定位解決。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved