O Cloudflare Tunnel oferece uma solução robusta para conectar a sua infraestrutura ao Cloudflare sem a necessidade de um IP público e sem abrir portas de rede. A seguir, encontrará um guia detalhado para configurar o Cloudflare Tunnel usando o HAProxy e WordPress, incluindo a instalação do WordPress-cli e a configuração do Nginx.
Como Funciona
O cloudflared estabelece túneis de saída entre os seus recursos e a rede global do Cloudflare. Estes túneis são persistentes e encaminham o tráfego para registros DNS. Dentro de um túnel, podem correr múltiplos processos ‘cloudflared’ (conectores) que estabelecem conexões com o Cloudflare e encaminham o tráfego para o data center mais próximo.
Pré-requisitos
- Conta Cloudflare: Conta ativa no Cloudflare.
- Infraestrutura: Servidor ou container que suporte cloudflared.
- Proxmox: Hypervisor para gerenciar containers.
- HAProxy: Container configurado para intermediar conexões.
- WordPress: Container com o site que deseja expor.
- Configuração de Rede: Conhecimento básico sobre redes para configurar IPs.
Passos a Seguir
Criar o Container HAProxy no Proxmox com Debian 11 ou 12
- Aceda ao Proxmox e crie um novo container com Debian 11 ou 12.
Instalar e Configurar o HAProxy no Container
- Configure o HAProxy editando o ficheiro
/etc/haproxy/haproxy.cfg
e adicione a seguinte configuração:
frontend http_front
bind *:80
default_backend http_back
backend http_back
server wordpress 10.0.10.20:80
- Configure o encaminhamento de IPv4: Edite o ficheiro
/etc/sysctl.conf
e adicione ou descomente a seguinte linha:
net.ipv4.ip_forward=1
- Aplique as alterações:
sysctl -p
Criar o Container WordPress no Proxmox com Debian 11 ou 12
- Aceda ao Proxmox e crie um novo container com Debian 11 ou 12.
Descarregar e Instalar o WordPress no Container
- Aceda o container e navegue para o diretório onde deseja instalar o WordPress:
cd /var/www/html/
- Descarregue a última versão do WordPress:
wget https://wordpress.org/latest.tar.gz
- Extraia o arquivo:
tar xzvf latest.tar.gz
- Ajuste as permissões:
sudo chown -R www-data:www-data /var/www/html/wordpress
sudo find /var/www/html/wordpress -type d -exec chmod 755 {} \;
sudo find /var/www/html/wordpress -type f -exec chmod 644 {} \;
Instalar e Configurar o WordPress-cli no Container
- Primeiro, atualize o sistema e instale as dependências necessárias:
sudo apt update sudo apt install wget curl php-cli php-mbstring git unzip
- Faça o download do WordPress-cli:
wget https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
- Torne o arquivo executável:
chmod +x wp-cli.phar
- Mova o arquivo para um diretório no PATH:
sudo mv wp-cli.phar /usr/local/bin/wp
- Verifique a instalação:
wp --info
Instalar e Configurar o Nginx no Container WordPress
- Instale o Nginx:
sudo apt update sudo apt install nginx
- Configure o Nginx editando o ficheiro de configuração:
sudo nano /etc/nginx/sites-available/wordpress
- Adicione a seguinte configuração para o WordPress:
server {
listen 80;
server_name example.com; # Substitua com o seu domínio
root /var/www/html/wordpress; # Caminho para a pasta onde o WordPress está instalado
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; # Ajuste conforme a versão do PHP
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
- Crie um link simbólico para ativar a configuração:
sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/
- Teste a configuração do Nginx e reinicie o serviço:
sudo nginx -t sudo systemctl restart nginx
Configurar o Túnel no Cloudflare
- No painel do Cloudflare, vá para Zero Trust > Networks > Tunnels.
- Crie um novo túnel e escolha Cloudflared.
- Nomeie o túnel e selecione Debian como o sistema operativo.
- Instale o túnel copiando o comando fornecido pela Cloudflare e cole-o no container HAProxy:
sudo cloudflared service install id_do_tunel
- Configure o túnel no Cloudflare, adicionando o subdomínio necessário e associando-o ao seu website, com o IP do container WordPress (10.0.10.20).
- Salve o túnel.
Verificação
Após criar o túnel, o Cloudflare adicionará automaticamente um registro DNS ao domínio com as informações do túnel que configurou.
Com estas instruções, deve conseguir configurar o Cloudflare Tunnel de forma segura e eficiente. Se precisar de assistência adicional, não hesite em consultar a documentação oficial do Cloudflare ou procurar ajuda em comunidades especializadas.
Disponibilidade e Failover do Tunnel
O conector cloudflared
foi desenvolvido para garantir alta disponibilidade sem necessidade de configurações adicionais. Quando executa um túnel, o cloudflared
estabelece quatro conexões apenas de saída entre o servidor de origem e a rede Cloudflare. Estas quatro conexões são feitas para quatro servidores diferentes espalhados por pelo menos dois centros de dados distintos. Este modelo assegura alta disponibilidade e reduz o risco de falhas de conexão individuais. Assim, se uma única conexão, servidor ou centro de dados ficar offline, os recursos continuarão disponíveis.
Réplicas do Cloudflared
O Cloudflare Tunnel também permite a implantação de instâncias adicionais do conector cloudflared
, chamadas réplicas, para cenários de disponibilidade e failover. Cada réplica estabelece quatro novas conexões, servindo como pontos de entrada adicionais para a origem, se necessário. Todas as réplicas apontam para o mesmo túnel, garantindo que a rede se mantenha operacional se um único host com cloudflared
falhar.
Por defeito, as réplicas não oferecem direcionamento de tráfego (aleatório, hash ou round-robin). Quando um pedido chega ao Cloudflare, é encaminhado para a réplica geograficamente mais próxima. Se o cálculo de distância falhar ou a conexão falhar, outras réplicas serão tentadas, mas não há garantia sobre qual conexão será a escolhida.
Quando Utilizar Réplicas do Cloudflared
- Para fornecer pontos adicionais de disponibilidade para um único túnel.
- Para alocar nós de failover dentro da rede.
- Para atualizar a configuração de um túnel sem tempo de inatividade.
Implantação de Réplicas do Cloudflared
Para implantar múltiplas instâncias do cloudflared
, é possível criar e configurar um túnel e executá-lo em vários hosts. Se o túnel funcionar como um serviço, é permitida apenas uma instância do cloudflared
por host.
Balanceadores de Carga Cloudflare: Distribuição Eficiente de Tráfego
Os Balanceadores de Carga da Cloudflare permitem distribuir o tráfego de forma inteligente entre múltiplas origens ou pontos de extremidade. Isso ajuda a garantir alta disponibilidade e desempenho, direcionando o tráfego com base em diversos fatores e assegurando que os usuários finais não enfrentem erros.
Quando Utilizar Balanceadores de Carga
- Direcionamento Inteligente: Direcione o tráfego com base em latência, geolocalização ou outros sinais para melhorar a experiência do usuário.
- Failover Automático: Redirecione o tráfego automaticamente para túneis ativos caso algum túnel falhe.
- Alertas de Inatividade: Receba notificações quando um túnel estiver inativo para tomar ações corretivas rapidamente.
- Distribuição Equitativa: Balanceie o tráfego de forma uniforme entre os túneis para evitar sobrecarga em qualquer origem.
Configuração
- Crie Vários Túneis: Configure múltiplos túneis com as mesmas definições para redundância.
- Defina Registos DNS: Utilize registos DNS para cada túnel no balanceador de carga.
- Configure Políticas de Tráfego: Estabeleça regras para direcionar o tráfego para os túneis conforme necessário.
Conclusão
Com a configuração do Cloudflare Tunnel, HAProxy, WordPress e Nginx, é possível estabelecer uma infraestrutura segura e eficiente para o seu site WordPress. O túnel Cloudflare protege a origem contra ataques e simplifica o acesso ao seu site através de uma conexão segura. Após seguir todos os passos, o seu ambiente estará pronto para oferecer uma experiência segura e otimizada aos utilizadores.