DigitalOcean Ubuntu 18.04服务器Nginx Server Blocks请求超时问题
解决Nginx Server Blocks外部访问超时问题
看起来你的Nginx配置本身是没问题的(nginx -t验证通过、本地ping域名正常),但外部访问超时的问题大概率出在网络防火墙层面——不管是DigitalOcean的云防火墙还是Ubuntu系统自带的UFW,都可能阻断了80端口的入站流量。下面是一步步的排查和解决步骤:
1. 先检查DigitalOcean云防火墙规则
DigitalOcean的Droplet默认可能绑定了云防火墙,这是很多人容易忽略的点:
- 登录DigitalOcean控制台,找到你的Droplet对应的Cloud Firewall配置
- 确保存在一条入站规则:允许
HTTP (80)端口接收来自0.0.0.0/0(IPv4)和::/0(IPv6)的所有流量 - 如果没有这条规则,赶紧添加,等待1-2分钟后再用浏览器测试访问
2. 检查Ubuntu系统自带的UFW防火墙
Ubuntu 18.04默认启用了UFW,需要确认80端口是否开放:
- 通过SSH登录Droplet,执行命令查看当前UFW状态:
sudo ufw status - 如果输出里没有
80/tcp的ALLOW规则,执行命令开放端口:sudo ufw allow 80/tcp - 再次执行
sudo ufw status确认规则已成功添加
3. 确认Nginx确实在监听80端口
有时候配置验证通过,但Nginx可能没正常监听端口:
- 执行命令查看Nginx的监听状态:
sudo netstat -tulpn | grep nginx - 正常情况下你应该看到类似
0.0.0.0:80和:::80的记录,说明Nginx在IPv4和IPv6的80端口都处于监听状态 - 如果看不到监听记录,重启Nginx再检查:
sudo systemctl restart nginx
4. 验证本地服务是否正常运行
在Droplet的SSH环境里,测试本地能否访问Nginx服务:
- 执行命令:
curl http://localhost # 或者直接访问你的域名 curl http://congressbios.com - 如果能正常返回
index.html的内容,说明Nginx在本地工作完全正常,问题肯定出在外部网络的流量阻断上(回到前两步防火墙排查) - 如果本地curl也失败,那需要检查网站目录的权限:
权限修复后重启Nginx再测试# 把目录所有者设置为Nginx运行用户www-data sudo chown -R www-data:www-data /var/www/congressbios.com/public # 设置正确的目录权限 sudo chmod -R 755 /var/www/congressbios.com
5. 最后验证外部端口连通性
从你的Mac上用telnet测试端口是否能连通:
telnet congressbios.com 80
如果连接超时,说明80端口确实被阻断,重点排查前两步的防火墙配置;如果能连接成功,再检查浏览器的缓存或代理设置。
内容的提问来源于stack exchange,提问作者kirkaracha
相关产品推荐
相关产品推荐

