Como Evitar o Erro 524 do Cloudflare em Servidores PHP-FPM com Apache no Ubuntu

A Tecnologia como Arte

Como Evitar o Erro 524 do Cloudflare em Servidores PHP-FPM com Apache no Ubuntu

A Cloudflare é um serviço popular de CDN e segurança que ajuda a acelerar a entrega de conteúdo e proteger sites contra ameaças. No entanto, pode surgir o erro 524 quando o servidor de origem demora muito para responder a uma solicitação, indicando que a conexão com o servidor foi estabelecida, mas este não respondeu a tempo. Neste artigo, abordaremos como configurar um servidor Ubuntu com Apache e PHP 7.4-FPM (ou superior) para evitar o erro 524, garantindo que as requisições sejam processadas dentro do limite de tempo permitido pelo Cloudflare (100 segundos). Também iremos levar em consideração o upload máximo da Cloudflare que é de 100mb.

Passo a Passo

1. Atualize e Instale os Pacotes Necessários

Primeiro, certifique-se de que seu sistema está atualizado e que você tem Apache e PHP-FPM instalados. iremos usar o php7.4, mas pode usar a versão mais recente.

sudo apt update
sudo apt upgrade -y
sudo apt install apache2 php7.4 php7.4-fpm libapache2-mod-fcgid -y

2. Configuração do PHP

Edite o arquivo php.ini para ajustar as diretivas relevantes:

sudo nano /etc/php/7.4/fpm/php.ini

Ajuste as seguintes diretivas, usamos 512mb de memória, mas pode ser maior conforme servidor:

max_file_uploads = 30
upload_max_filesize = 10M
post_max_size = 100M
max_execution_time = 90
memory_limit = 512M

Salve e feche o arquivo.

3. Ajuste a Configuração do PHP-FPM

Edite o arquivo www.conf para garantir que as requisições não excedam 100 segundos:

sudo nano /etc/php/7.4/fpm/pool.d/www.conf

Ajuste as seguintes diretivas, podemos ser 90s ou 60s:

request_terminate_timeout = 90s

Salve e feche o arquivo e reinicie o PHP-FPM:

sudo systemctl restart php7.4-fpm

4. Configuração do Apache

Edite o arquivo de configuração principal do Apache ou a configuração do seu site específico:

sudo nano /etc/apache2/apache2.conf

Adicione ou ajuste as seguintes diretivas de timeout e KeepAlive:

Timeout 100
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
ProxyTimeout 100

Salve e feche o arquivo e reinicie o Apache:

sudo systemctl restart apache2

5. Configuração do Virtual Host no Apache

Configure o Virtual Host do Apache para usar PHP-FPM. Edite o arquivo de configuração do seu site:

sudo nano /etc/apache2/sites-available/000-default.conf

Adicione as seguintes linhas dentro da configuração do VirtualHost:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

    <Directory /var/www/html>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    <FilesMatch ".+\\\\.ph(ar|p|tml)$">
        SetHandler "proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost"
    </FilesMatch>
</VirtualHost>

Salve e feche o arquivo e reinicie o Apache:

sudo systemctl restart apache2

6. Testando a Configuração

Crie um formulário HTML simples que permita o upload de até 30 arquivos de 10MB cada:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Upload de Imagens</title>
</head>
<body>
    <form action="upload.php" method="post" enctype="multipart/form-data">
        <input type="file" name="images[]" multiple>
        <input type="submit" value="Upload">
    </form>
</body>
</html>

E crie um script PHP (upload.php) para processar o upload:

<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    foreach ($_FILES['images']['tmp_name'] as $key => $tmp_name) {
        $file_name = $_FILES['images']['name'][$key];
        $file_tmp = $_FILES['images']['tmp_name'][$key];
        $upload_dir = 'uploads/';

        if (move_uploaded_file($file_tmp, $upload_dir . $file_name)) {
            echo "Arquivo $file_name carregado com sucesso.<br>";
        } else {
            echo "Falha no upload do arquivo $file_name.<br>";
        }
    }
}
?>

Com essas configurações, seu servidor Apache com PHP 7.4-FPM está ajustado para evitar o erro 524 do Cloudflare. Certifique-se de que as configurações de timeout e limites de tamanho de arquivo estão dentro dos parâmetros permitidos pelo Cloudflare. Monitore o desempenho do servidor e ajuste conforme necessário para garantir um serviço eficiente e confiável.