在linux中需修改/etc/hosts实现自定义域名解析,格式为“ip 域名”,须独占一行并保存;可用nano手动编辑或tee命令安全追加,如echo "192.168.1.50 db.internal" | sudo tee -a /etc/hosts > /dev/null。

要在Linux系统中让浏览器或命令行工具直接通过自定义域名(如 dev.local、api.test)访问本机或局域网服务,必须修改 /etc/hosts 文件实现静态域名解析,该操作绕过DNS、立即生效、无需重启任何服务。
用文本编辑器手动添加映射
打开终端,执行:
sodu nano /etc/hosts
在文件末尾新增一行,格式为:IP地址 后跟至少一个空格或制表符,再写域名(可加别名);例如:
127.0.0.1 dev.local api.test www.dev.local
保存退出:Ctrl+O → 回车确认 → Ctrl+X。这一步不能跳过保存动作,否则修改不写入磁盘。
注意:若原文件末尾无换行符,新追加的行可能与上一行连成一体,导致解析失败。务必确保每条映射独占一行。
用 tee 命令安全追加多条记录
方法一:单行追加
执行:
echo "192.168.1.50 db.internal" | sudo tee -a /etc/hosts > /dev/null
方法二:批量追加(推荐用于脚本或部署)
执行:
sudo tee -a /etc/hosts > /dev/null # 开发环境映射
127.0.0.1 frontend.local
::1 frontend.local
192.168.1.100 backend.prod
EOF
这个操作会把 EOF 之间的所有内容(含注释)原样追加到 /etc/hosts 底部,不会覆盖原有配置,适合 CI/CD 或初始化脚本使用。
验证绑定是否生效
第一步:检查解析结果
运行:
host dev.local
第二步:确认返回 IP 是否为你设定的值,例如输出中出现 “dev.local has address 127.0.0.1” 即成功。
第三步:测试网络连通性(可选)
执行:
curl -I http://dev.local
若返回 HTTP 状态码(如 200 或 403),说明域名已正确解析并能建立连接。
注意:nslookup 有时仍走 DNS 通道,不能准确反映 hosts 效果,优先用 host 或 ping。
清除应用层缓存(关键补救步骤)
某些程序(如 Chrome、Firefox、Java 应用、Docker 容器)会自行缓存 DNS 结果,即使 hosts 已改,仍可能沿用旧解析。
Chrome 用户:访问 chrome://net-internals/#dns → 点击 “Clear host cache”
Firefox 用户:在地址栏输入 about:config → 搜索 network.dnsCacheExpiration → 双击设为 0 → 重启浏览器
Docker 容器内无法自动继承宿主机 hosts,需在运行时显式传入:
docker run --add-host=dev.local:127.0.0.1 ...











