HAPROXY com persistência de URL
Informações geradas pelo ChatGPT.
Sim, é possível configurar o HAProxy para atender tanto HTTP (porta 80) quanto HTTPS (porta 443) ao mesmo tempo. Isso pode ser feito configurando dois frontends separados — um para HTTP e outro para HTTPS — e ambos encaminhando as requisições para o mesmo backend, de modo que o balanceamento de carga e a persistência por URL sejam aplicados de maneira uniforme para ambos os protocolos.
Exemplo de Configuração para HTTP e HTTPS ao Mesmo Tempo
Aqui está um exemplo de configuração onde o HAProxy aceita tráfego HTTP e HTTPS e roteia as requisições para o mesmo backend, mantendo a persistência baseada na URL para ambos os protocolos:
Explicação da Configuração:
Como Funciona:
Certificado SSL:
O caminho /etc/ssl/certs/meucertificado.pem
deve apontar para o certificado SSL e a chave privada do seu domínio. Se você estiver usando o Let's Encrypt ou outra autoridade certificadora (CA), basta colocar o arquivo .pem
correto que contenha o certificado público e a chave privada.
Caso você precise gerar um certificado SSL autoassinado, pode usar o seguinte comando openssl
:
Esse comando gera um certificado autoassinado, o que é útil para testes ou ambientes internos, mas para produção, recomenda-se o uso de um certificado de uma autoridade certificadora (CA) confiável.
Conclusão:
Se você deseja configurar o HAProxy para rotear tráfego em portas diferentes de 80 (HTTP) e 443 (HTTPS), o procedimento é semelhante, mas você deve ajustar a configuração de frontends e backends para escutar nas portas específicas que deseja utilizar.
A lógica de balanceamento de carga e persistência por URL será a mesma, mas em vez de usar as portas padrão (80 e 443), você configurará o HAProxy para escutar nas portas que você escolher.
Exemplo de Configuração para Portas Diferentes:
Vamos imaginar que você deseja usar as portas 8080 para HTTP e 8443 para HTTPS, em vez das portas padrão (80 e 443). A configuração seria:
Explicação das Modificações:
-
Frontend HTTP:
-
bind *:8080
: O HAProxy agora escuta na porta8080
para tráfego HTTP, em vez de80
. -
acl is_http_request path_reg ^/.*
: A regra ACL captura qualquer URL que for solicitada e a redireciona para o backend.
-
-
Frontend HTTPS:
-
bind *:8443 ssl crt /etc/ssl/certs/meucertificado.pem
: O HAProxy escuta na porta8443
para tráfego HTTPS e usa o certificado SSL localizado no caminho/etc/ssl/certs/meucertificado.pem
. O certificado SSL deve ser válido, seja autoassinado ou de uma autoridade certificadora.
-
-
Backend:
-
A configuração do backend permanece a mesma, com balanceamento de carga baseado em
roundrobin
, persistência por URL usandostick-table
, e a inserção do cookieSERVERID
para garantir a persistência.
-
-
Servidores Backend:
-
server server1 192.168.1.1:80 check
: Os servidores backend continuam sendo configurados na porta80
, porque o HAProxy irá fazer a terminação SSL para o tráfego HTTPS e, em seguida, encaminhá-lo para os servidores backend na porta80
.
-
Fluxo de Funcionamento:
1. Requisição HTTP (porta 8080):
-
O cliente acessa a URL
http://meusite.com:8080/pagina1
. -
O HAProxy recebe a requisição na porta
8080
, e com base no balanceamento de carga (roundrobin), encaminha a requisição para um dos servidores backend. -
O servidor que responder à primeira requisição para
/pagina1
será registrado no stick-table com a URL/pagina1
, garantindo que futuras requisições para essa URL sejam roteadas para o mesmo servidor.
2. Requisição HTTPS (porta 8443):
-
O cliente acessa a URL
https://meusite.com:8443/pagina1
. -
O HAProxy recebe a requisição na porta
8443
, faz a terminação SSL (descriptografa o tráfego HTTPS) e, em seguida, redireciona a requisição para os servidores backend na porta80
. -
O HAProxy verifica na stick-table qual servidor foi associado à URL
/pagina1
e direciona a requisição para o mesmo servidor que atendeu a primeira requisição.
3. Persistência para Todos os Usuários:
-
Independentemente de ser uma requisição HTTP ou HTTPS, a persistência será mantida para todos os usuários com base na URL, garantindo que a URL
/pagina1
seja sempre tratada pelo mesmo servidor.
Caso Você Queira Usar Portas Diferentes para Cada Backend:
Se você quiser que o tráfego seja roteado para diferentes portas nos servidores backend, você pode ajustar a configuração para cada servidor backend. Por exemplo, se você tiver servidores que escutam em portas diferentes, a configuração seria algo como:
Essa configuração faria com que cada servidor backend estivesse escutando em portas diferentes, mas o HAProxy ainda aplicaria a persistência e o balanceamento de carga.
Resumo:
-
Sim, é possível configurar o HAProxy para escutar em portas diferentes de 80 e 443 (por exemplo, 8080 para HTTP e 8443 para HTTPS).
-
A persistência de URL e o balanceamento de carga continuam funcionando da mesma forma, independentemente da porta que está sendo utilizada.
-
A configuração de terminação SSL no HAProxy permite que o tráfego HTTPS seja manipulado na porta
8443
e redirecionado para os servidores backend na porta80
(ou qualquer porta configurada).
No Comments