為什麼 22 通了、80/443 卻完全連不到?
在 AWS 中國區域 (cn-north-1 北京 / cn-northwest-1 寧夏),TCP 80、443、8080 等「網站服務常用埠」預設被封鎖。
只有完成工信部 ICP 備案,並向 AWS 申請「開放網站埠」後,這些埠才會在骨幹網層被解除阻擋。
所以即使:
- Security Group、Network ACL、Route Table 都已放行
- Nginx 已經
LISTEN 0.0.0.0:80
- 你能用 SSH (22) 登入同一台機器
外部還是會對 80/443 得到 connection timed out(或直接被 RST),因為封在 AWS 邊界路由器 上。
如何驗證確實是「中國區管制」所致?
-
在 Security Group 再開一個非常規埠(例如 8888)
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/test sudo sed -i 's/listen 80 default_server;/listen 8888 default_server;/' /etc/nginx/sites-available/test sudo ln -s /etc/nginx/sites-available/test /etc/nginx/sites-enabled/ sudo systemctl reload nginx
-
從本地端嘗試:
curl -I http://<ElasticIP>:8888
- 能連上 → 代表路由/NACL 都沒問題,只是 80/443 被雲端側封鎖。
- 依然連不到 → 才回頭檢查 VPC 設定。
由於 8888 並非「網路服務常用埠」,AWS (以及其他雲廠商像阿里/Tencent) 在中國區通常不會預封它。
解決方案
步驟 | 說明 |
---|---|
1. 進行 ICP 備案 | - 以公司或個人名義在工信部提交域名備案 - AWS 有專屬備案系統: AWS IaaS ICP Filing System (https://beian.amazonaws.cn) |
2. 將域名指到 EC2 彈性 IP | 備案審批時要求域名 A 記錄指向中國區 IP。 |
3. 申請開通「網站常用埠」 | - ICP 號碼核發後,登入 AWS Support Center → Create Case → Service Limit Increase → Port Opening - 填入要開的埠(80 / 443 / 8080…)與對應 Elastic IP - 一般 1-2 工作日內完成 |
4. 等待 AWS 通知 | 審核通過後,骨幹層的 ACL 會解除,外部即可正常訪問。 |
小提醒
- 沒有 ICP 備案前,可用非常規埠 (8888、5000…) 測試功能,但正式上線仍須走 80/443。
- 若你只需內網或跨區訪問,可直接用 VPC Peering / VPN,不受此限制。
- 同一張備案可覆蓋多台 EC2,只要域名指過去即可。
快速 FAQ
問題 | 回答 |
---|---|
為何 22 不受影響? | 22 屬於「運維管理埠」,中國區沒有強制備案即可開放的限制。 |
一定要 80/443 才會被封嗎? | AWS 中國目前只對常用 Web 埠(80、443、8080)進行預封鎖。其他高位埠如 8088、8888 不在黑名單。 |
備案多久? | 工信部審批通常 7–20 天;企業名義較快,個人可能久一些。AWS 審核通過後還需向雲端申請開埠。 |
只要完成備案並向 AWS 申請開埠,現有的 Nginx 與 Security Group 設定就能立即生效,外部連線將會得到你目前看到的 404(或網站實際內容)。祝順利完成上線!