Den*_*nov 13 domain-name-system hosting redirect isp
我正在更改我网站的服务器。旧服务器的IP不能移到新的。为了没有停机时间,我打算执行以下操作,请有人确认它会起作用:
我的逻辑告诉我,当我从旧盒子重定向到新 IP 时,用户不会在浏览器中看到域名,但会看到新 IP。有没有办法重定向到新 IP 并随 HOSTNAME 一起发送,以便用户在浏览器中看到域名?
我这样做是因为该站点一直在使用中,并且仅更改 DNS 设置是行不通的,因为在传播过程中,数据库不会在新旧服务器之间同步。
小智 19
这是对我有用的方法:
这是我将如何执行第 4 步:
我们将在 Linux 服务器上配置 IPTables,将所有来自端口 80(这是默认 Web 服务器端口)的流量重定向到具有 IP 的服务器122.164.34.240。第一步是设置您的 Linux 机器以允许进行这种转发。打开终端窗口,以 root 用户身份登录并运行以下命令:
# echo 1 >/proc/sys/net/ipv4/ip_forward
Run Code Online (Sandbox Code Playgroud)
下一步是告诉 IPTables 将流量重定向到新服务器:
# iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 122.164.34.240
Run Code Online (Sandbox Code Playgroud)
这就是 IPTables 魔法发生的地方。在第三步也是最后一步,我们告诉 IPTables 将连接的来源重写为新服务器的端口 80,使其看起来来自旧服务器。
# iptables -t nat -A POSTROUTING -p tcp -d 122.164.34.240 --dport 80 -j MASQUERADE
Run Code Online (Sandbox Code Playgroud)
最后一步是必需的,因为如果我们不告诉新服务器的 Web 服务器连接来自客户端机器,它会认为它们来自旧服务器。
您可能还想对数据库和电子邮件服务器端口重复此操作。
您还可以考虑添加多个 A 记录。例如,谷歌使用这个,检查他们的 nslookup 输出:
Name: google.com
Addresses: 209.85.148.101
209.85.148.102
209.85.148.113
209.85.148.138
209.85.148.100
209.85.148.139
Run Code Online (Sandbox Code Playgroud)
如果您向一个域添加多个 A 记录,访问者将收到多个 IP 并按该顺序尝试它们。如果一个失败,客户端会移动到下一个尝试。
提前 24 小时将新 IP 设置为额外的 A 记录,启动新服务器,关闭旧服务器,删除 IP。