作为一名 Web 开发者,我的日常工作就是在本地进行开发,实现各种功能。过去几年,我一直使用 127.0.0.1 作为本地服务的访问地址。当需要同时开发多个项目时,我会用不同端口来区分,例如:
- 项目A:
127.0.0.1:8080 - 项目B:
127.0.0.1:8081 - …以此类推
当然,也可以用 localhost 代替 127.0.0.1。
前段时间我在想,有没有办法让本地访问的地址看起来更“真实”一点?我知道可以通过配置 HOSTS 文件将任意域名解析到本地,但有没有本身就专门设计用于解析到本地的域名呢?
最初,我尝试将 local.dbkuaizi.com 及其子域名解析到 127.0.0.1,这样访问 local.dbkuaizi.com 或 test.local.dbkuaizi.com 都能指向本地站点。但用了几天后发现一个问题:域名太长,输入不方便。
于是我又想,不如自己注册一个短域名?但在域名注册网站找了半天,发现两位的短域名要么已被注册,要么价格不菲。
后来我在网上搜索了一番,发现确实存在一些专门解析到本地的域名。现将整理结果汇总如下:
本地解析域名
localhost
IETF(互联网工程任务组)在 RFC 6761 中明确规定:localhost 和 *.localhost 应始终解析为本地回环地址(即 127.0.0.1)。
因此,以下地址都会被解析到 127.0.0.1,满足各种使用场景:
| 域名 | 说明 |
|---|---|
http://localhost |
顶级域名 |
http://dbkuaizi.localhost |
二级域名 |
http://dbkuaizi.test.localhost |
三级域名 |
需要注意的是,
.localhost解析到本地是应用层规范,Safari、Chrome、CURL 等主流工具都支持,但并非所有应用都遵循。
由于这是官方硬性规定,该域名非常稳定且通用性强,在绝大多数情况下推荐使用。
*.lvh.me
该域名的持有者是 @levicook。自 2010 年起,该域名及其泛域名均解析到 127.0.0.1。2021 年 6 月,作者因认为使用人数不多、不愿继续承担域名费用而停止续费。随后,越来越多网友在其推特下留言表示愿意捐助,希望保留该域名。最终 @levicook 恢复了续费,并开启了捐款通道(但目前该捐款地址已返回 403)。
以下地址都会被解析到 127.0.0.1:
| 域名 | 说明 |
|---|---|
http://lvh.me |
顶级域名 |
http://dbkuaizi.lvh.me |
二级域名 |
http://dbkuaizi.test.lvh.me |
三级域名 |
这是目前最短的可用域名,也是我日常开发的选择,体验良好。
*.fbi.com
这个域名…很有意思,虽然不清楚所有者是谁,但至少从 2022 年至今,它一直解析到本地回环地址。
| 域名 | 说明 |
|---|---|
http://fbi.com |
顶级域名 |
http://demo.fbi.com |
二级域名 |
http://demo.test.fbi.com |
三级域名 |
由于所有者不明,不推荐用于正式开发,当作一个趣闻即可。
*.nip.io
nip.io 和 sslip.io 是一种 DNS 服务,当查询包含嵌入 IP 地址的主机名时,会将域名解析为对应 IP。这两个服务已稳定运行十多年,每秒处理约 5000 次请求,甚至被 Google 引用在 Kubernetes 文档 中。
举例说明:
| 域名 | 解析结果 |
|---|---|
http://127.0.0.1.nip.io |
127.0.0.1 |
http://app.192.168.0.10.nip.io |
192.168.0.10 |
http://7f000101.nip.io |
127.0.0.1(十六进制表示) |
http://127-0-0-1.nip.io |
127.0.0.1(带破折号格式) |
需要注意的是,nip.io 和 sslip.io 本身不解析到 127.0.0.1。
虽然该服务稳定,但我个人不太喜欢,因为域名中必须包含 IP,与我最初的目标不符。
local.gd
这是 nip.io 服务的一部分,该域名及其子域名均解析到 127.0.0.1,用法与其他本地域名相同:
| 域名 | 说明 |
|---|---|
http://local.gd |
顶级域名 |
http://dbkuaizi.local.gd |
二级域名 |
http://dbkuaizi.test.local.gd |
三级域名 |
local.dbkuaizi.com
这是我个人持有的域名。对我而言,其稳定性仅次于 localhost。如果你有需要,也可以直接使用(至少在可预见的未来,该域名会持续解析到 127.0.0.1)。
| 域名 | 说明 |
|---|---|
http://local.dbkuaizi.com |
二级域名 |
http://demo.local.dbkuaizi.com |
三级域名 |
http://demo.test.local.dbkuaizi.com |
四级域名 |
其他
我还收集了其他一些解析到 127.0.0.1 的域名,但不建议使用,因为它们未承诺长期解析到本地:
http://curd.lifehttp://crud.lifehttp://localhost.ptlogin2.qq.comhttp://localtest.me
使用场景
在本地开发测试中,使用本地域名可以实现以下功能:
Cookie 子域名共享
浏览器将 127.0.0.1 视为 IP 地址而非域名,而 Cookie 在域名和 IP 的处理逻辑上完全不同。
例如,设置 Cookie 时可以使用:
document.cookie = "session=abc123; domain=.local.dbkuaizi.com; path=/"
这样,无论是 demo.local.dbkuaizi.com 还是 test.local.dbkuaizi.com 都能共享该 Cookie,而使用 IP 地址无法模拟此场景。
OAuth 开发
大多数 OAuth 服务商出于安全考虑,不允许使用 IP 作为重定向 URL,要求使用真实域名,例如:
- ✅
https://myapp.lvh.me:3000/auth/callback - ✅
https://myapp.localhost:3000/auth/callback - ❌
https://127.0.0.1:3000/auth/callback - ❌
http://localhost:3000/auth/callback(部分服务商不允许 HTTP)
本地同时开发多个项目
例如,项目A 运行在 3000 端口,项目B 运行在 4000 端口:
使用 IP:端口,难以区分:
- ❌
http://127.0.0.1:3000 - ❌
http://127.0.0.1:4000
使用本地域名更清晰:
- ✅
http://project-a.lvh.me→ 指向项目A - ✅
http://project-b.lvh.me→ 指向项目B
多商户系统
假设你正在开发一个名为 “Shop” 的电商平台,支持多个商户拥有独立店铺。使用本地域名可以完美模拟多租户架构:
- 张氏百货:
http://zhang3.shop.lvh.me - 李氏商城:
http://li4.shop.lvh.me - 王氏旗舰店:
http://wang5.shop.lvh.me
每个租户拥有独立的子域名,数据完全隔离。
多模块划分
仍以多商户系统为例,通过子域名将功能模块清晰分离,每个服务都有独立的访问入口:
http://admin.shop.lvh.mehttp://api.shop.lvh.me
这样,开发环境与生产环境的域名结构完全一致,代码中的域名逻辑无需调整,实现从开发到上线的无缝衔接。
本文由两双筷子撰写,并利用 DeepSeek 对排版与语句进行了优化。