公众号旧文
域名挂了之后,如何把网站迁移到新域名?
之前胖子写过一篇:为什么我 注册域名 一分钱都不用花(2)
里面向大家推荐了免费的二级域名,胖子自己也在用。
结果前两天突然就 NXDOMAIN 了:

但服务器还在,数据还在,域名只是入口,我完全可以换一个入口,让站点立刻复活。
这篇文章,就借此机会,讲清楚:
当域名挂掉后,如何快速给网站更换新域名,并恢复访问。
一、核心思路:域名只是入口
先把一个关键认知讲清楚,网站访问链路是这样的:
域名 → DNS解析 → IP → Nginx → 应用程序
所以域名挂了,服务器还在,应用也还在跑。
那就只需要做一件事:换新的域名,把它重新指向这台服务器。
二、第一步:准备一个新域名
你需要搞一个新域名,添加解析记录:
A → 你的服务器 IPv4
AAAA → 你的服务器 IPv6(如果有)
验证解析是否成功:
getent hosts yourdomain.com
curl ifconfig.me
如果返回的 IP 和你服务器一致,说明 DNS 没问题。
三、第二步:修改 Nginx,让新域名接管站点
假设你原来的网站是跑在本机 5001 端口:
直接写一个新的 Nginx 配置:
server {
listen 80;
listen [::]:80;
server_name yourdomain.com;
location / {
proxy_pass http://127.0.0.1:5001;
proxy_http_version 1.1;
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 -t
systemctl reload nginx
测试:
curl -I http://yourdomain.com
如果返回 200 或 301,说明新域名已经接管成功。
四、第三步:一定要签新的 HTTPS 证书
这是最容易踩坑的一步。
证书是绑定域名的,不能复用旧域名的证书。
必须重新申请:
certbot --nginx -d yourdomain.com
成功后验证:
curl -I https://yourdomain.com
五、第四步:修改站内所有旧域名引用
这一点非常关键。
直接全局搜索:
grep -Rni "旧域名.com" /var/www/home/opt 2>/dev/null
重点检查:
.envconfig.js / config.pyindex.html- API 地址
- 跳转逻辑(redirect)
替换成新域名:
sed -i 's/旧域名.com/新域名.com/g' 文件
六、验证是否真的迁移成功
需要确认这几件事:
# HTTP 是否跳 HTTPS
curl -I http://yourdomain.com
# HTTPS 是否正常
curl -I https://yourdomain.com
# 本机后端是否正常
curl -I http://127.0.0.1:5001
理想结果:
- HTTP → 301 → HTTPS
- HTTPS → 200 OK
七、清理旧域名
如果确定不再使用旧域名,可以清理证书:
certbot delete --cert-name olddomain.com
不会影响新域名。
八、迁移其实就 4 步
整个过程可以压缩成:
换 DNS → 改 Nginx → 签证书 → 替换代码中的旧域名
真正难的不是操作,而是排错。
尤其是这三个坑:
- 忘了签新证书
- 后端写死跳转
- Nginx 默认规则抢请求
域名只是入口,服务器才是本体,只要你服务器还在:
- 换 1 个域名可以恢复
- 换 10 个域名也可以恢复
甚至同时让多个域名指向同一个站点,这样哪怕其中的某个域名挂了,也可以通过其他域名继续访问网站。