一、适用场景:什么时候需要修改 hosts
hosts 文件是操作系统本地的一张"域名-IP 对照表",优先级高于公网 DNS 解析。对站长和运维来说,最常见的用法是在正式切换解析之前,先在自己电脑上把域名指向新服务器或 CDN 节点,本地验证网站能否正常访问,确认没有问题后再去修改域名 DNS。这样即使新环境存在配置问题,也不会影响到真实访客。
典型适用场景主要有四类:一是网站迁移或更换服务器后,想先测试新服务器的访问效果;二是接入 CDN 后,想验证 CNAME 是否生效、回源是否正常;三是本地开发时需要把测试域名指向开发机;四是临时屏蔽某个域名用于调试。无论哪种场景,修改前都建议先备份原文件,并确认自己拥有管理员权限。
二、修改前的准备与 hosts 文件的基本规则
hosts 文件的位置随系统而异:Windows 在 C:\Windows\System32\drivers\etc\hosts,macOS 和 Linux 都在 /etc/hosts。文件没有扩展名,可以用记事本、nano 或 vim 打开编辑。
文件格式非常简单,每一行一条记录,左边是 IP 地址,右边是域名,中间用空格或 Tab 分隔,# 开头的行是注释。例如"203.0.113.10 www.example.com"表示本机访问 www.example.com 时会直接连接到 203.0.113.10。如果多个域名要指向同一个 IP,也可以写在同一行,用空格分隔,例如"203.0.113.10 www.example.com example.com"。需要注意两点:一是不要用 Word 或带格式的编辑器修改,避免引入不可见字符;二是保存时尽量选择 ANSI 或"UTF-8 无 BOM"编码,否则部分系统可能解析失败。
三、Windows 系统修改 hosts 的完整步骤
第一步,以管理员身份运行记事本。点击开始菜单,搜索"记事本",右键选择"以管理员身份运行"。如果直接双击打开 hosts 文件,保存时会因权限不足而失败。
第二步,在记事本中点击"文件→打开",路径输入 C:\Windows\System32\drivers\etc,文件名输入 hosts 后回车。如果看不到文件,把右下角文件类型改为"所有文件"。
第三步,在文件末尾添加一行记录,例如"203.0.113.10 www.example.com",IP 替换为你自己的服务器或 CDN 节点地址。点击"文件→保存",编码建议选择 ANSI。
第四步,刷新 DNS 缓存并验证。以管理员身份运行命令提示符(CMD),依次执行下面两条命令:
ipconfig /flushdns
ping www.example.com
如果 ping 出来的 IP 已经变成你设置的地址,说明修改生效。随后打开浏览器访问该域名,确认网站内容来自新服务器即可。
四、macOS 与 Linux 修改 hosts 的步骤
macOS 和 Linux 的修改思路一致,都是直接编辑 /etc/hosts。打开终端,执行 sudo nano /etc/hosts,输入密码后用方向键移动到文件末尾,按同样格式添加记录,按 Ctrl+O 保存、Ctrl+X 退出。保存后刷新本地缓存:
sudo killall -HUP mDNSResponder
sudo dscacheutil -flushcache
Linux 系统同样执行 sudo nano /etc/hosts 添加记录。刷新缓存的方式取决于系统是否使用 systemd-resolved,较新的发行版可以执行 sudo systemd-resolve --flush-caches 或 resolvectl flush-caches;如果安装了 nscd,则执行 sudo service nscd restart。验证方式与 Windows 相同,用 ping 或 curl -I 查看返回的 IP 是否正确。

五、修改后不生效的排查与缓存清理
很多用户修改 hosts 后发现"没有生效",绝大多数情况是缓存或绕过了本地解析,可以按以下顺序排查。首先是系统 DNS 缓存,Windows 执行 ipconfig /flushdns,macOS 和 Linux 按上一节的命令清理。其次是浏览器缓存,Chrome 可以在地址栏输入 chrome://net-internals/#dns,点击"Clear host cache"清理浏览器内的 DNS 缓存,Firefox 则在 about:networking#dns 中清理。
第三类常见原因是浏览器开启了"安全 DNS"(DNS over HTTPS)。该功能会绕过系统 hosts 文件直接向 DoH 服务器查询,导致修改无效,需要在浏览器设置中临时关闭。第四类是代理或 VPN,流量经过代理转发时,域名解析由代理服务器完成,hosts 同样不生效,测试期间建议关闭。还有一个容易混淆的点:nslookup 和 dig 命令直接查询 DNS 服务器,并不读取 hosts 文件,所以验证时要用 ping 或 curl,而不是 nslookup。
六、常见问题与使用建议
问题一:修改 hosts 后需要重启电脑吗?不需要。hosts 是即时读取的配置文件,正常情况下保存后刷新 DNS 缓存即可生效,只有极少数安全软件会锁定系统解析,才需要重启验证。
问题二:hosts 和域名 DNS 解析哪个优先级高?hosts 优先。系统解析域名时会先查本地 hosts,命中后就不再请求 DNS 服务器,这也是它适合做本地测试的原因。
问题三:保存 hosts 时提示没有权限怎么办?说明编辑器不是以管理员身份运行的。Windows 需要右键记事本选择"以管理员身份运行",macOS 和 Linux 需要在命令前加 sudo。
问题四:如何确认 hosts 已经生效?最可靠的方法是执行 ping 你的域名,看返回的 IP 是否是设置的地址;也可以用 curl -I http://你的域名 查看响应头中的服务器信息。注意不要用 nslookup 验证,它不读 hosts 文件。
最后提醒两点使用建议:hosts 只适合临时测试,不建议作为长期解析方案,测试完成后应当把添加的记录删除或在前加 # 注释掉,并再次刷新缓存,否则网站正式切换解析后反而可能打不开;另外,恶意软件有时会篡改 hosts 文件把常用网站指向钓鱼站点,建议定期检查文件内容是否包含陌生记录,日常保留一份原始 hosts 备份,一旦改错,用备份覆盖回去即可立刻恢复。
总的来说,修改 hosts 是网站迁移、CDN 接入前最常用的本地测试手段,操作本身不难,关键在于格式正确、权限足够、缓存清干净。按照本文的步骤修改并验证后,就可以在不动线上解析的情况下提前发现配置问题,测试完成后记得清理记录、刷新缓存,让本机解析恢复正常。












暂无评论内容