Apache2子域名指向不同目录配置故障排查求助
首先得明确,DNS_PROBE_FINISHED_NXDOMAIN这个错误的核心意思是:浏览器找不到blog.example.com对应的IP地址,所以咱们先从最根源的DNS环节开始排查,再逐步检查后续配置:
1. 最可能的原因:DNS子域名记录未配置或配置错误
你需要登录你的域名服务商后台(比如阿里云、Cloudflare这类),检查DNS解析记录里有没有给blog子域名添加对应的记录:
- 推荐添加A记录:主机填
blog,值填你的服务器公网IP地址 - 或者添加CNAME记录:主机填
blog,值填example.com(前提是example.com的A记录已经正确指向服务器IP)
验证方法:在本地终端执行命令测试解析结果:
# Linux/Mac用dig dig blog.example.com # Windows用nslookup nslookup blog.example.com
如果返回结果里没有正确的服务器IP,那就是DNS记录的问题,赶紧修正。
2. DNS缓存导致的解析延迟
即使你刚配置好DNS记录,本地电脑、路由器或者ISP的DNS缓存可能还没更新,导致解析还是失败。可以手动清空缓存:
- Windows:打开命令提示符(管理员权限),执行
ipconfig /flushdns - Linux:执行
sudo systemd-resolve --flush-caches(不同发行版可能略有差异) - Mac:执行
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
也可以换个网络(比如手机热点)测试,或者用第三方在线DNS查询工具直接搜“DNS查询”就能找到检查全球各地的解析状态,确认记录是否已经生效。
3. 确认DNS正常后,再检查Web服务器的虚拟主机配置
当DNS解析正常后,如果访问还是有问题,再看服务器的虚拟主机配置:
如果你用的是Apache:
确保你已经创建了针对blog.example.com的虚拟主机配置文件(比如/etc/apache2/sites-available/blog.example.com.conf),内容类似:
<VirtualHost *:80> ServerName blog.example.com DocumentRoot /var/www/exampleblog # 可选:配置日志路径 ErrorLog ${APACHE_LOG_DIR}/blog-error.log CustomLog ${APACHE_LOG_DIR}/blog-access.log combined # 确保目录权限正确 <Directory /var/www/exampleblog> AllowOverride All Require all granted </Directory> </VirtualHost>
然后启用这个配置并重启Apache:
sudo a2ensite blog.example.com.conf sudo systemctl restart apache2
如果你用的是Nginx:
在/etc/nginx/sites-available/下创建配置文件,内容类似:
server { listen 80; server_name blog.example.com; root /var/www/exampleblog; index index.html index.htm index.php; # 可选:配置日志 access_log /var/log/nginx/blog.access.log; error_log /var/log/nginx/blog.error.log; # 处理静态文件等规则(如果需要) location / { try_files $uri $uri/ =404; } }
然后创建软链接到sites-enabled目录,测试配置并重启Nginx:
sudo ln -s /etc/nginx/sites-available/blog.example.com /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl restart nginx
4. 检查服务器防火墙/安全组
最后还要确认服务器的防火墙或者云服务商的安全组是否开放了80(HTTP)和443(HTTPS,如果用的话)端口:
- 用UFW防火墙的话:
sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw reload
- 云服务器(比如AWS、阿里云)要去控制台的安全组规则里,添加允许外部访问80/443端口的条目。
额外提醒:DNS生效需要时间
DNS记录修改后,生效时间由你设置的TTL(生存时间)决定,通常是5分钟到24小时不等。如果刚配置完,不妨等个10-15分钟再测试。
内容的提问来源于stack exchange,提问作者Feralheart

