You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EC2实例Nginx服务本地可访问 公网IP无法访问问题咨询

EC2实例Nginx公网无法访问排查方案

本地执行curl localhost/curl 127.0.0.1能正常返回Nginx默认页,已经证明Nginx服务本身运行完全正常,反复重装Nginx解决不了问题,故障点全在流量拦截链路,按优先级从高到低排查即可:

  • 第一优先级:检查EC2安全组入站规则
    90%的同类问题都是安全组未放行Web端口导致。进入AWS控制台对应EC2实例详情页,找到实例绑定的安全组,检查入站规则:
    • 必须放通TCP协议80端口的入站流量,测试阶段源地址可暂时设为0.0.0.0/0允许所有公网IP访问,后续按需收紧为指定IP段
    • 如果配置了HTTPS访问,同步放通TCP 443端口
    • 不要只检查出站规则,公网用户访问你的服务走的是入站流量,默认新建的安全组通常只开放22端口用于SSH登录,不会自动开80/443
  • 第二优先级:检查Ubuntu本地ufw防火墙规则
    安全组放通后如果还是不通,排查系统自带防火墙拦截:
    1. 执行sudo ufw status查看防火墙状态,如果返回Status: inactive说明防火墙没开,直接跳过这步
    2. 如果返回Status: active,执行以下命令放行Nginx流量并重载规则:
      sudo ufw allow 'Nginx Full'
      sudo ufw reload
      
    3. 重新执行sudo ufw status,确认返回结果里有80/tcp、443/tcp的ALLOW规则即可
  • 第三优先级:检查VPC网络ACL规则
    前两步都配置完仍不通的话,检查实例所在子网绑定的网络ACL:
    网络ACL是无状态规则,和安全组的有状态逻辑不同,入站放通80端口的同时,必须同步放通目的端口为1024-65535的TCP入站回包流量,同时对应出站规则也要放通对应端口段,否则三次握手无法完成。
  • 第四优先级:确认Nginx监听地址配置
    最后确认Nginx没有只绑定回环地址:
    执行sudo ss -tulpn | grep nginx查看监听结果,正常应该显示Nginx监听0.0.0.0:80或者:::80(即监听所有网卡地址)。如果结果只显示127.0.0.1:80,修改Nginx站点配置文件里的listen参数,改为listen 80;(默认配置就是监听所有地址,非手动改坏基本不会出这个问题),改完执行sudo nginx -s reload重载配置即可。

附本地回环验证正常的回显参考:

<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

内容的提问来源于stack exchange,提问作者Md Misbauddin Chowdhury

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 18:27:31