Eu configurei uma instância simples do haproxy em uma instalação limpa do Debian 10 Buster. Adicionei algumas configurações simples e necessárias para ativar a passagem para o endereço IP em questão (que foi redigido na configuração abaixo).
O arquivo de configuração:
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
stats timeout 30s
user haproxy
group haproxy
daemon
# Default SSL material locations
ca-base /etc/ssl/certs
crt-base /etc/ssl/private
# Default ciphers to use on SSL-enabled listening sockets.
# For more information, see ciphers(1SSL). This list is from:
# https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/
# An alternative list with additional directives can be obtained from
# https://mozilla.github.io/server-side-tls/ssl-config-generator/?server=haproxy
ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS
ssl-default-bind-options no-sslv3
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http
frontend myfrontend
bind *:80
mode tcp
default_backend mybackendhttp
frontend myfrontendhttps
bind *:443
mode tcp
use_backend mybackendhttps
backend mybackendhttp
mode tcp
option ssl-hello-chk
server server1 ***********:80
backend mybackendhttps
mode tcp
option ssl-hello-chk
server server1 ************:443
As alterações que fiz (se fizer uma comparação com o arquivo original) (ip redigido):
+
+
+frontend myfrontend
+ bind *:80
+ mode tcp
+ default_backend mybackendhttp
+
+frontend myfrontendhttps
+ bind *:443
+ mode tcp
+ use_backend mybackendhttps
+
+backend mybackendhttp
+ mode tcp
+ option ssl-hello-chk
+ server server1 ***********:80
+
+backend mybackendhttps
+ mode tcp
+ option ssl-hello-chk
+ server server1 **********:443
Tudo funciona corretamente, mas por algum motivo o desempenho da rede é incrivelmente lento ao fazer uma solicitação do navegador do meu PC, solicitação curl via linha de comando ou celular, estou obtendo cerca de 200-300kb/s quando normalmente estaria em torno de 10x que.
Se eu tentar a mesma solicitação via curl em um VPS, obtenho uma velocidade muito maior (5000kb/s).
O haproxy está sendo executado em uma VM de instância de computação do GCP, então duvido que seja um problema de largura de banda de rede, mas posso tentar configurar um serviço http estático simples e ver como isso se compara.
Qual pode ser a causa do problema? Como eu poderia diagnosticar isso? A ativação de logs no haproxy forneceria uma visão melhor sobre esse problema?
Me deparei com a seguinte pergunta que também parece descrever um comportamento semelhante:
Respostas HAProxy SSL muito lentas
a biblioteca OpenSSL precisa ter o nome do host configurado corretamente em /etc/hosts
No entanto, não está claro para mim o que significa "configurado corretamente".
Responder1
Respondendo porque não tenho representante suficiente.
Em /etc/hosts
, você deseja encontrar esta linha:
127.0.0.1 localhost
Substitua localhost
pelo seu FQDN, como haproxy.domain.com ou o que quer que seja. Deve ser igual ao nome do host do seu servidor.
No Debian, você pode definir o nome do host com este comando:
hostname-ctl set-hostname haproxy.domain.com