PHP 自动切换 Cloudflare DNS 记录以应对网站宕机
使用 PHP 脚本自动切换 Cloudflare DNS 记录以应对网站宕机
本脚本利用 Cloudflare API 检测指定域名的 IP 地址是否与 Cloudflare DNS 记录中的 IP 地址相同,如果不同,则使用当前 IP 地址更新 DNS 记录,实现网站宕机时自动切换 IP 的功能。
代码示例:
<?php
$domain = 'example.com'; // 替换为需要检测的域名
$api_key = 'your_api_key'; // 替换为您的 Cloudflare API Key
$email = 'your_email_address'; // 替换为您的 Cloudflare 账户邮箱
$zone_id = 'your_zone_id'; // 替换为您的 Cloudflare Zone ID
// 获取域名的当前 IP 地址
$current_ip = gethostbyname($domain);
// 创建 Cloudflare API 请求
$request = curl_init();
curl_setopt($request, CURLOPT_URL, "https://api.cloudflare.com/client/v4/zones/{$zone_id}/dns_records?type=A&name={$domain}");
curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
curl_setopt($request, CURLOPT_HTTPHEADER, array(
"X-Auth-Email: {$email}",
"X-Auth-Key: {$api_key}",
"Content-Type: application/json"
));
$response = json_decode(curl_exec($request), true);
curl_close($request);
// 获取 Cloudflare DNS 记录中的 IP 地址
$cloudflare_ip = $response["result"][0]["content"];
// 如果当前 IP 地址与 Cloudflare DNS 记录中的 IP 地址不同,则更新 DNS 记录
if ($current_ip != $cloudflare_ip) {
$request = curl_init();
curl_setopt($request, CURLOPT_URL, "https://api.cloudflare.com/client/v4/zones/{$zone_id}/dns_records/{$response["result"][0]["id"]}");
curl_setopt($request, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($request, CURLOPT_POSTFIELDS, json_encode(array(
"type" => "A",
"name" => $domain,
"content" => $current_ip,
"ttl" => 1,
"proxied" => false
)));
curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
curl_setopt($request, CURLOPT_HTTPHEADER, array(
"X-Auth-Email: {$email}",
"X-Auth-Key: {$api_key}",
"Content-Type: application/json"
));
curl_exec($request);
curl_close($request);
}
?>
使用说明:
- 替换代码中的
$domain、$api_key、$email和$zone_id为您的实际信息。 - 将代码保存为
.php文件,并放置在您的服务器上。 - 设置定时任务定期执行该脚本,例如每 5 分钟执行一次。
注意:
- 此代码仅适用于 A 记录类型的 DNS 记录。
- 在执行脚本之前,请确保您已在 Cloudflare 中启用 API 功能。
- 使用此脚本时,建议您设置一个单独的 Cloudflare 账户,避免影响您的主账户。
通过使用此脚本,您可以轻松实现网站宕机时自动切换 IP 的功能,提高网站的可用性和可靠性。
原文地址: https://www.cveoy.top/t/topic/msHL 著作权归作者所有。请勿转载和采集!