Automatizando o Cloudflare com PHP: Soluções para Gerenciamento de DNS, Segurança e Performance [artigo]

O Cloudflare é uma plataforma robusta para segurança, desempenho e confiabilidade de sites. Com a API do Cloudflare e a linguagem PHP, você pode automatizar diversas tarefas e melhorar a gestão de sua infraestrutura. Neste artigo, vamos explorar algumas soluções práticas, como gerenciamento de DNS dinâmico, bloqueio de IPs, configurações de cache e muito mais. Vamos lá!


1. Gerenciamento de DNS Dinâmico com PHP e Cloudflare

Para quem tem IPs dinâmicos, atualizar os registros DNS pode ser um desafio. Com a API do Cloudflare, você pode automatizar essa tarefa facilmente. O código abaixo mostra como atualizar o registro A de um domínio para o novo IP dinâmico.

<?php
$apiKey = 'YOUR_CLOUDFLARE_API_KEY';
$email = 'YOUR_CLOUDFLARE_EMAIL';
$zoneId = 'YOUR_ZONE_ID';
$recordId = 'YOUR_RECORD_ID'; // O ID do registro DNS A
$newIp = 'NEW_IP_ADDRESS'; // O novo IP dinâmico

$url = "https://api.cloudflare.com/client/v4/zones/{$zoneId}/dns_records/{$recordId}";

$data = [
    'type' => 'A',
    'name' => 'example.com',
    'content' => $newIp,
    'ttl' => 1,
    'proxied' => true,
];

$options = [
    'http' => [
        'header' => "Content-Type: application/json\r\n" .
                    "Authorization: Bearer {$apiKey}\r\n" .
                    "X-Auth-Email: {$email}\r\n",
        'method' => 'PUT',
        'content' => json_encode($data),
    ],
];

$context = stream_context_create($options);
$response = file_get_contents($url, false, $context);

if ($response === FALSE) {
    die('Error updating DNS record');
}

echo "DNS record updated: " . $response;
?>

Com esse script, você pode atualizar o IP de seus registros automaticamente, mantendo o seu domínio sempre acessível.


2. Automação de Firewall: Bloqueando IPs Suspeitos

Manter a segurança de um site é crucial. A API do Cloudflare permite bloquear IPs suspeitos ou maliciosos diretamente. Abaixo está um exemplo de como bloquear um IP automaticamente.

<?php
$apiKey = 'YOUR_CLOUDFLARE_API_KEY';
$email = 'YOUR_CLOUDFLARE_EMAIL';
$zoneId = 'YOUR_ZONE_ID';

$ipToBlock = 'IP_TO_BLOCK'; // O IP que você quer bloquear

$url = "https://api.cloudflare.com/client/v4/zones/{$zoneId}/firewall/access_rules/rules";

$data = [
    'mode' => 'block',
    'configuration' => [
        'target' => 'ip',
        'value' => $ipToBlock,
    ],
    'notes' => 'Blocked due to suspicious activity',
];

$options = [
    'http' => [
        'header' => "Content-Type: application/json\r\n" .
                    "Authorization: Bearer {$apiKey}\r\n" .
                    "X-Auth-Email: {$email}\r\n",
        'method' => 'POST',
        'content' => json_encode($data),
    ],
];

$context = stream_context_create($options);
$response = file_get_contents($url, false, $context);

if ($response === FALSE) {
    die('Error blocking IP');
}

echo "IP blocked successfully: " . $response;
?>

Esse código permite bloquear um IP malicioso de forma automática, ajudando a proteger seu site contra ataques.


3. Configuração de Cache: Forçando a Limpeza de Cache

A gestão do cache é uma das funcionalidades essenciais do Cloudflare. Você pode forçar a limpeza de cache de um URL específico com a seguinte API:

<?php
$apiKey = 'YOUR_CLOUDFLARE_API_KEY';
$email = 'YOUR_CLOUDFLARE_EMAIL';
$zoneId = 'YOUR_ZONE_ID';
$urlToClear = 'https://example.com/path/to/your/file.jpg';

$purgeData = [
    'files' => [
        $urlToClear,
    ],
];

$purgeUrl = "https://api.cloudflare.com/client/v4/zones/{$zoneId}/purge_cache";

$options = [
    'http' => [
        'header' => "Content-Type: application/json\r\n" .
                    "Authorization: Bearer {$apiKey}\r\n" .
                    "X-Auth-Email: {$email}\r\n",
        'method' => 'POST',
        'content' => json_encode($purgeData),
    ],
];

$context = stream_context_create($options);
$response = file_get_contents($purgeUrl, false, $context);

if ($response === FALSE) {
    die('Error purging cache');
}

echo "Cache purged successfully: " . $response;
?>

Esse script limpa o cache de arquivos específicos, garantindo que os usuários recebam a versão mais atualizada do seu conteúdo.


4. Monitoramento de Performance: Coletando Dados de Tráfego

Se você deseja monitorar o desempenho do seu site, pode usar a API do Cloudflare para coletar dados de tráfego. Veja como acessar os dados de análise:

<?php
$apiKey = 'YOUR_CLOUDFLARE_API_KEY';
$email = 'YOUR_CLOUDFLARE_EMAIL';
$zoneId = 'YOUR_ZONE_ID';

$url = "https://api.cloudflare.com/client/v4/zones/{$zoneId}/analytics/dashboard";

$options = [
    'http' => [
        'header' => "Authorization: Bearer {$apiKey}\r\n" .
                    "X-Auth-Email: {$email}\r\n",
        'method' => 'GET',
    ],
];

$context = stream_context_create($options);
$response = file_get_contents($url, false, $context);

if ($response === FALSE) {
    die('Error fetching analytics data');
}

echo "Analytics data: " . $response;
?>

Com isso, você pode monitorar o tráfego e obter dados sobre a performance do seu site, como latência e número de requisições.


5. Gerenciamento de Regras de Página: Criando Regras Personalizadas

Você pode criar regras personalizadas para o seu site, como otimizar o cache de determinadas páginas ou redirecionar tráfego. Aqui está um exemplo de como criar uma regra de página que aplica um cache agressivo a URLs específicas:

<?php
$apiKey = 'YOUR_CLOUDFLARE_API_KEY';
$email = 'YOUR_CLOUDFLARE_EMAIL';
$zoneId = 'YOUR_ZONE_ID';

$pageRuleData = [
    'targets' => [
        [
            'target' => 'url',
            'constraint' => [
                'operator' => 'matches',
                'value' => 'http://example.com/*',
            ],
        ],
    ],
    'actions' => [
        [
            'id' => 'cache_level',
            'value' => 'aggressive',
        ],
    ],
    'priority' => 1,
    'status' => 'active',
];

$url = "https://api.cloudflare.com/client/v4/zones/{$zoneId}/pagerules";

$options = [
    'http' => [
        'header' => "Content-Type: application/json\r\n" .
                    "Authorization: Bearer {$apiKey}\r\n" .
                    "X-Auth-Email: {$email}\r\n",
        'method' => 'POST',
        'content' => json_encode($pageRuleData),
    ],
];

$context = stream_context_create($options);
$response = file_get_contents($url, false, $context);

if ($response === FALSE) {
    die('Error creating page rule');
}

echo "Page rule created: " . $response;
?>

Esse código cria uma regra de página para otimizar o cache de URLs específicas, ajudando a melhorar o desempenho.


Conclusão

A API do Cloudflare, combinada com PHP, permite automatizar uma ampla gama de tarefas, desde o gerenciamento de DNS até a segurança avançada e otimização de performance. Com esses exemplos, você pode começar a criar soluções personalizadas para o seu site de forma rápida e eficaz.

Se você tiver alguma dúvida ou desejar mais exemplos, fique à vontade para entrar em contato. Aproveite a flexibilidade da API do Cloudflare e coloque sua infraestrutura na linha de frente da inovação!

Rolar para cima