专业开发者为何抛弃 localhost:3000,转投真域名?
为什么专业开发者都抛弃 localhost:3000,转用真域名
上周我给同事们演示一个内部工具。工具本身没人提。大家全盯着域名问:“这域名花了多少钱?”有人觉得我就是为了秀才买的。还有人以为他们IP被特批了,能进高端访问。
真相呢?我一分钱没花。全是本地跑的。只是换成了 www.internaltool.com,不是 localhost:3002。
现代开发的反差
Node.js、Rails这些框架自带服务器,太方便了。npm start一敲,立马在3000端口上线。不用折腾配置,不用搭服务器。
但这方便有代价。
你同时开三四个项目,每个占不同端口:3000、3001、8080、5173……脑子成端口导航仪了。不想代码,只记哪个端口对应哪个项目。团队里更乱,一锅粥。
最要命,本地环境跟生产环境长得完全不像。bug就爱藏这儿。
老方法,永不过时
以前框架没自带服务器,开发者用自定义域名。本地通过系统配置映射到真域名。
不光好看。是为了让本地完美复制生产环境。
方法超简单:改hosts文件,加Nginx反向代理。就能让多个项目用干净域名跑——dev.yourproject.com、qa.yourproject.com,甚至生产URL,全指本地不同端口。
好处?URL专业,脑子清爽,团队好协作,本地环境跟生产一模一样。
本地自定义域名全攻略
第一步:改hosts文件
hosts文件就是你电脑的私人DNS。先查再上网问。加条记录,就告诉电脑:“myproject.com 别上网找,本地搞定。”
找文件位置:
- macOS/Linux:
/etc/hosts - Windows:
C:\Windows\System32\Drivers\etc\hosts
用编辑器开(要管理员权限或sudo)。加这些:
127.0.0.1 myproject.com
127.0.0.1 dev.myproject.com
127.0.0.1 qa.myproject.com
浏览器现在就把这些域名解析到本地(127.0.0.1)。
第二步:Nginx当反向代理
浏览器敲 myproject.com,默认80端口。你的Node/Rails app在3000端口,不匹配,进不去。
Nginx来救场。它守80端口,转发流量到正确本地端口。
新建或改Nginx配置(Linux通常在 /etc/nginx/sites-available/)。加这些块:
server {
listen 80;
server_name myproject.com;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 80;
server_name dev.myproject.com;
location / {
proxy_pass http://localhost:3001;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 80;
server_name qa.myproject.com;
location / {
proxy_pass http://localhost:3002;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
配置好,重启Nginx:
# macOS
brew services restart nginx
# Linux
sudo systemctl restart nginx
搞定。浏览器访 myproject.com,其实连的是 localhost:3000,域名超专业。
小贴士:WSL2特殊配置
用Windows Subsystem for Linux(WSL2)开发?多一步。Linux有独立虚拟IP,跟Windows主机不一样。查它:
wsl hostname -I
输出类似 172.x.x.x。Windows hosts文件用这个IP,别用127.0.0.1:
172.x.x.x myproject.com
172.x.x.x dev.myproject.com
为什么真有用
表面看,就美化URL。其实深层价值大。
一是环境一致。本地架构跟生产一样。生产用反向代理(必须的),本地也用。localhost藏的bug,全露出来了。
二是团队沟通。不说“开3000端口工具”,说“上 dev.internaltool.com”。清楚,不出错,专业。
三是脑子轻松。不用切端口号,像上网一样敲域名。
最后,拉开档次。随便localhost的,是业余。深想开发环境的,才是プロ。
这技能永不过时
这招几年了,现在方便当道,被忘角落。但方便不等于专业或可扩展。
花20分钟设本地域名,是本月开发流程最佳投资。基础打好,专心写好代码。
下次有人问你为啥不用 localhost:3000,别说“酷”。说你像专业人士一样,想环境。