Ubuntu 18.04 VPS部署网站无法加载问题求助
问题分析与解决方案
从你给出的信息来看,核心问题出在域名解析环节——host命令返回SERVFAIL,说明递归DNS服务器无法从你设置的自定义域名服务器(ns1/ns2.justfitnessbooks.com)获取有效的解析记录。结合你之前用VestaCP时NS正常,现在手动部署只装了Apache和PHP的情况,我整理了以下排查和解决步骤:
1. 先确认自定义NS服务器的可用性
你把域名的NS改成了自己的ns1.justfitnessbooks.com和ns2.justfitnessbooks.com,但现在你只安装了Apache和PHP,没有运行DNS服务(VestaCP会自带Bind9这类DNS服务,卸载后该服务就消失了),这会导致其他DNS服务器无法从你的NS获取解析数据,直接触发SERVFAIL错误。
验证步骤:
- 测试你的NS域名本身能否被正常解析:
如果返回无法解析或错误IP,说明域名注册商的glue记录(NS域名与对应IP的绑定)没有配置好。host ns1.justfitnessbooks.com - 直接测试你的服务器是否提供DNS服务:
如果返回空结果或错误信息,说明你的服务器上确实没有运行DNS服务。dig @192.188.78.105 justfitnessbooks.com
2. 两种解决思路:维护自定义NS 或 改用公共NS
思路一:继续使用自定义NS(需部署DNS服务)
如果你坚持用自己的NS服务器,需要在服务器上安装并配置Bind9:
- 安装Bind9及工具:
sudo apt update && sudo apt install bind9 bind9utils - 创建区域配置文件:在
/etc/bind/zones目录下新建db.justfitnessbooks.com,添加以下内容(替换为你的服务器IP):$TTL 3600 @ IN SOA ns1.justfitnessbooks.com. admin.justfitnessbooks.com. ( 2024030801 ; Serial(每次修改递增) 3600 ; Refresh 600 ; Retry 604800 ; Expire 3600 ) ; Negative Cache TTL ; 配置域名服务器记录 @ IN NS ns1.justfitnessbooks.com. @ IN NS ns2.justfitnessbooks.com. ; 配置A记录 @ IN A 192.188.78.105 www IN A 192.188.78.105 ns1 IN A 192.188.78.105 ns2 IN A 192.188.78.105 - 在
/etc/bind/named.conf.local中添加区域引用:zone "justfitnessbooks.com" { type master; file "/etc/bind/zones/db.justfitnessbooks.com"; }; - 重启Bind服务并检查运行状态:
sudo systemctl restart bind9 sudo systemctl status bind9 - 开放UFW的53端口(DNS服务需要TCP和UDP协议):
sudo ufw allow 53/tcp sudo ufw allow 53/udp sudo ufw reload - 回到域名注册商后台,务必添加glue记录:将ns1/ns2.justfitnessbooks.com绑定到你的服务器IP 192.188.78.105,避免解析NS域名时陷入循环。
思路二:改用公共NS(更简单,推荐)
如果不想维护自己的DNS服务,直接把域名的NS改回注册商提供的默认NS,或者改用Cloudflare、Google Domains这类免费公共NS,然后在这些平台上添加A记录指向你的服务器IP 192.188.78.105即可。这种方式不需要你在服务器上运行DNS服务,更稳定省心。
3. 额外排查点
- 清空本地DNS缓存:执行
systemd-resolve --flush-caches后重新测试解析。 - 追踪解析流程:用
dig justfitnessbooks.com +trace命令,可以直观看到解析过程中哪一步出现了故障。 - 验证Apache配置:直接访问
http://192.188.78.105,如果能正常显示网站内容,说明Apache配置没问题,问题完全出在DNS环节。
内容的提问来源于stack exchange,提问作者MrNedas




