Configuré una instancia de haproxy simple en una instalación limpia de Debian 10 Buster. Agregué algunas configuraciones simples y necesarias para habilitar el paso a la dirección IP en cuestión (que se ha redactado en la siguiente configuración).
El archivo de configuración:
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
Los cambios que hice (si hago una diferencia con el archivo original) (ip redactada):
+
+
+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
Todo funciona correctamente, pero por alguna razón el rendimiento de la red es increíblemente lento cuando realizo una solicitud del navegador desde mi PC, solicitud curl a través de la línea de comando o dispositivo móvil, obtengo alrededor de 200-300 kb/s cuando normalmente obtengo alrededor de 10 veces. eso.
Si intento la misma solicitud a través de curl en un VPS, obtengo una velocidad mucho mayor (5000 kb/s).
El haproxy se ejecuta en una máquina virtual de instancia informática de GCP, por lo que dudo que sea un problema de ancho de banda de la red, pero puedo intentar configurar un servicio http estático simple y ver cómo se compara.
¿Cuál podría ser la causa del problema? ¿Cómo podría diagnosticar esto? ¿Habilitar los registros en haproxy proporcionaría una mejor comprensión de este problema?
Me encontré con la siguiente pregunta que también parece describir un comportamiento similar:
Respuestas SSL de HAProxy muy lentas
la biblioteca OpenSSL necesita tener el nombre de host configurado correctamente en /etc/hosts
Sin embargo, no me queda claro qué significa "configurado correctamente".
Respuesta1
Respondiendo porque no tengo suficiente reputación.
En /etc/hosts
, desea encontrar esta línea:
127.0.0.1 localhost
Reemplácelo localhost
con su FQDN, como haproxy.domain.com o lo que sea. Debe ser el mismo que el nombre de host de su servidor.
En Debian, puedes configurar el nombre de host con este comando:
hostname-ctl set-hostname haproxy.domain.com