如何将Apache虚拟主机与DNS服务器关联,使test3.fr可正常访问?
解决test3.fr域名无法访问的问题
看起来你已经搞定了Apache虚拟主机的基础配置,也能通过IP+端口访问站点,核心问题出在域名解析关联和端口映射/监听这两块,下面一步步来排查解决:
1. 先确认DNS记录是否正确配置
这是浏览器找不到站点的最常见原因:
- 登录你的自建DNS服务器,添加
test3.fr的A记录(如果是IPv6就加AAAA记录),指向你的服务器IP(内网测试用内网IP,公网访问用公网IP)。同时别忘了添加www.test3.fr的CNAME记录指向test3.fr。 - 用命令验证解析是否生效:
确认返回的IP和你的服务器IP一致。另外要注意:浏览器所在的客户端机器必须把DNS服务器设置为你的自建DNS,不然会用默认公共DNS,肯定找不到这个自定义域名。nslookup test3.fr # 或者用dig看更详细信息 dig test3.fr
2. 确保Apache监听了对应的端口
你的test3站点用了50002(HTTP)和50502(HTTPS),得确认Apache已经开启了这两个端口的监听:
- 打开Apache的端口配置文件
/etc/apache2/ports.conf,检查是否有以下两行:
如果没有,添加进去,然后重启Apache生效:Listen 50002 Listen 50502sudo systemctl restart apache2
3. 解决端口访问的痛点(关键!)
浏览器访问https://test3.fr时,默认会用443端口,但你的test3 SSL虚拟主机在50502端口,这就导致请求发到了主站的443端口,自然找不到test3站点。有两个解决方案:
方案一:用基于域名的虚拟主机(推荐,无需加端口访问)
把test3的虚拟主机改到默认的80/443端口,让Apache根据请求的域名自动分发:
- 修改你的VirtualHost配置:
# HTTP 80端口,自动跳转HTTPS <VirtualHost *:80> DocumentRoot "/var/www/test3" ServerName test3.fr ServerAlias www.test3.fr Redirect permanent / https://test3.fr/ <Directory "/var/www/test3"> Options FollowSymLinks AllowOverride all Require all granted </Directory> ErrorLog /var/log/apache2/error.test3.fr.log CustomLog /var/log/apache2/access.test3.fr.log combined </VirtualHost> # HTTPS 443端口 <VirtualHost *:443> DocumentRoot "/var/www/test3" ServerName test3.fr ServerAlias www.test3.fr <Directory "/var/www/test3"> Options FollowSymLinks AllowOverride all Require all granted </Directory> SSLEngine on SSLCertificateFile /etc/apache2/ssl/apache.crt SSLCertificateKeyFile /etc/apache2/ssl/apache.key ErrorLog /var/log/apache2/error.test3.fr.log CustomLog /var/log/apache2/access.test3.fr.log combined </VirtualHost> - 同时确保你的主站
les-tatates.cm的VirtualHost也是*:443和*:80,并且ServerName正确设置为les-tatates.cm,这样Apache会根据请求的域名区分两个站点。 - 重启Apache后,直接访问
https://test3.fr就能正常打开了。
方案二:保留自定义端口(需加端口访问)
如果必须用50502端口,那访问时需要明确加上端口:https://test3.fr:50502。同时要确保:
- 服务器防火墙允许50502端口的入站流量(比如用ufw的话:
sudo ufw allow 50502/tcp) - 公网访问的话,确认运营商没有屏蔽这个端口
4. 验证虚拟主机配置有效性
用Apache自带的命令检查配置是否正确加载:
apache2ctl -S
这个命令会列出所有已加载的虚拟主机,确认test3.fr对应的端口和配置都正确显示。如果有错误,会提示具体的配置问题。
5. 清除缓存避免干扰
- 浏览器强制刷新(Ctrl+Shift+R),清除DNS缓存和页面缓存
- 客户端机器刷新DNS缓存:
- Windows:
ipconfig /flushdns - Linux:
systemd-resolve --flush-caches - Mac:
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
- Windows:
完成以上步骤后,test3.fr应该就能正常访问了。
内容的提问来源于stack exchange,提问作者K.J Fogang Fokoa
相关产品推荐
相关产品推荐

