Nginx子域名仅本地可访问 远程访问超时无日志问题求助
Nginx子域名远程访问超时解决方案
问题本质说明
本地curl子域名返回正常401认证提示,说明Nginx子域名配置本身无错误。远程访问80端口超时且无Nginx日志生成,是因为请求在到达Nginx前就被网络层规则拦截,结合主站走Cloudflare可正常访问的特征,核心原因是源站访问控制仅放行Cloudflare回源IP段,未放行你家用公网IP的直接访问请求。
排查步骤
- 检查Linode云平台安全组规则
登录Linode控制台进入对应实例的安全组配置,查看80端口的入站允许源范围。如果仅配置了Cloudflare IP段,临时添加你家用公网IP(可执行curl ifconfig.me获取公网地址)为允许源,协议选择TCP,端口填写80,保存后再次测试访问。 - 检查服务器本地防火墙规则
执行ufw status查看系统ufw防火墙运行状态与规则:- 若防火墙已启用,且80端口仅允许Cloudflare IP段访问,执行
ufw allow from 你家公网IP to any port 80添加放行规则,重载防火墙后测试。 - 若使用iptables管理规则,执行
iptables -L -n查看80端口的访问控制策略,对应添加你家IP的放行规则即可。
- 若防火墙已启用,且80端口仅允许Cloudflare IP段访问,执行
- 确认Nginx监听配置
执行ss -tunlp | grep nginx确认Nginx是否监听在0.0.0.0:80,你当前子域名配置中已写listen 80; listen [::]:80;,默认绑定所有网卡,该配置出错概率极低。 - 核对本地hosts配置
确认家用PC的hosts文件中sub.example.be绑定的IP为Linode实例的公网IP,避免误填内网IP导致访问失败。
长期配置建议
如果后续需要将该子域名正式对外提供服务,直接在Cloudflare DNS后台添加sub.example.be的A记录指向Linode源站IP即可,不需要单独保留家用IP的放行规则,Cloudflare回源会走已放行的IP段,可正常访问。
内容的提问来源于stack exchange,提问作者Don Serrano
相关产品推荐
相关产品推荐

