You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Apache2服务器本地可访问但无法公网生效,请求技术排查指引

公网无法访问网站的排查指引

别急,我帮你一步步梳理排查步骤,解决这个只能本地访问的问题:

  • 确认公网IP的真实性
    有时候路由器后台显示的IP可能不是真正的公网IP(比如运营商做了NAT),你可以打开终端/命令提示符,执行curl ifconfig.me(Linux/macOS/Windows)或者dig +short myip.opendns.com @resolver1.opendns.com(Linux/macOS)来获取真实公网IP,对比你使用的my_rogers_IP_address是否一致。

  • 检查路由器端口转发配置

    • 确保转发的端口和你的网站服务监听端口完全匹配(比如HTTP默认80,HTTPS默认443);
    • 转发的目标IP是运行网站设备的内网私有IP(比如192.168.1.105),建议把这个设备的IP设置为静态,避免重启后IP变动导致规则失效;
    • 确认端口转发规则处于启用状态,不少路由器需要手动勾选才能生效。
  • 排查本地服务器防火墙

    • Windows:打开「Windows Defender防火墙」,查看入站规则中是否允许网站端口的连接,没有的话手动添加允许规则;
    • Linux:执行sudo ufw status(如果用ufw防火墙)或者sudo iptables -L,确认对应端口的入站权限是允许的;
    • macOS:进入「系统设置-网络-防火墙」,检查是否允许运行网站的应用对外提供网络服务。
  • 测试运营商是否封锁端口
    部分家用宽带运营商会默认封锁80、443这类常用端口,你可以临时把网站服务的监听端口改成8080这类非默认端口,同时在路由器转发8080端口,然后用http://你的公网IP:8080测试。如果能访问,说明是运营商封锁了默认端口,你可以联系运营商申请解封,或者长期使用非默认端口。

  • 确认是否处于CGNAT环境
    如果你的公网IP是10.x.x.x、172.16-31.x.x、192.168.x.x这类私有IP段,说明运营商用了运营商级NAT(CGNAT),你没有独立的公网IP,这种情况下直接用公网IP访问是行不通的。你可以联系运营商申请独立公网IP,或者使用DDNS服务配合端口转发来实现访问。

  • 注意测试环境
    很多家用路由器不支持「发夹NAT」,也就是内网设备用公网IP访问内网服务会失败。所以测试的时候一定要用手机流量(断开WiFi)或者其他外网环境的设备,不要在同一个局域网内测试公网访问。

内容的提问来源于stack exchange,提问作者Toebi

火山引擎 最新活动