¿Cómo configurar un reenvío inverso?
La función de reenvío inverso de SSLcat se basa en el reenvío inteligente por dominio, compatible con múltiples protocolos y estrategias de equilibrio de carga. A continuación se detalla el método de configuración.
Estructura de configuración básica
El archivo de configuración de SSLcat utiliza el formato YAML, con la siguiente estructura básica:
# sslcat.conf
server:
port: 443
http_port: 80
# Configuración de reenvío inverso
proxies:
- domain: "example.com"
target: "http://localhost:3000"
protocol: "http"
- domain: "api.example.com"
target: "https://backend.example.com"
protocol: "https"
ssl_verify: false
Configuración de dominio
Cada regla de proxy debe especificar un dominio y un servidor de destino:
- domain - El dominio al que acceden los clientes
- target - La dirección del servidor backend
- protocol - El protocolo para comunicarse con el backend (http/https)
- ssl_verify - Si se debe verificar el certificado SSL del backend
Configuración de múltiples dominios
Puede configurar múltiples dominios para que apunten a diferentes servicios backend:
proxies:
# Sitio principal
- domain: "www.example.com"
target: "http://localhost:3000"
protocol: "http"
# Servicio de API
- domain: "api.example.com"
target: "http://localhost:8080"
protocol: "http"
# Panel de administración
- domain: "admin.example.com"
target: "http://localhost:9000"
protocol: "http"
# Recursos estáticos
- domain: "static.example.com"
target: "http://localhost:4000"
protocol: "http"
Configuración de equilibrio de carga
SSLcat admite múltiples estrategias de equilibrio de carga:
proxies:
- domain: "app.example.com"
targets:
- "http://backend1.example.com:3000"
- "http://backend2.example.com:3000"
- "http://backend3.example.com:3000"
protocol: "http"
load_balance: "round_robin" # Round Robin
# load_balance: "least_conn" # Menos conexiones
# load_balance: "ip_hash" # Hash de IP
Soporte de WebSocket
SSLcat admite de forma nativa el proxy WebSocket:
proxies:
- domain: "ws.example.com"
target: "ws://localhost:8080"
protocol: "ws"
websocket:
enabled: true
ping_interval: 30
pong_timeout: 10
Configuración de comprobación de estado
Configure la comprobación de estado de los servicios backend:
proxies:
- domain: "app.example.com"
target: "http://localhost:3000"
protocol: "http"
health_check:
enabled: true
path: "/health"
interval: 30
timeout: 5
retries: 3
Configuración de encabezados de solicitud
Puede agregar o modificar encabezados de solicitud:
proxies:
- domain: "api.example.com"
target: "http://localhost:8080"
protocol: "http"
headers:
add:
X-Forwarded-Proto: "https"
X-Real-IP: "$remote_addr"
remove:
- "X-Forwarded-For"
Reescritura de ruta
Admite la reescritura de la ruta de la URL:
proxies:
- domain: "api.example.com"
target: "http://localhost:8080"
protocol: "http"
path_rewrite:
"/v1/api": "/api"
"/old": "/new"
Configuración del grupo de conexiones
Optimice el rendimiento del grupo de conexiones:
proxies:
- domain: "app.example.com"
target: "http://localhost:3000"
protocol: "http"
connection_pool:
max_connections: 100
max_idle_connections: 10
idle_timeout: 90
keep_alive: true
Configuración de conmutación por error
Configure la conmutación por error de los servicios backend:
proxies:
- domain: "app.example.com"
targets:
- "http://primary.example.com:3000"
- "http://backup1.example.com:3000"
- "http://backup2.example.com:3000"
protocol: "http"
failover:
enabled: true
max_failures: 3
recovery_time: 60
Configuración de SSL
Configure la conexión SSL con el backend:
proxies:
- domain: "secure.example.com"
target: "https://backend.example.com"
protocol: "https"
ssl:
verify: true
cert_file: "/path/to/ca.crt"
key_file: "/path/to/ca.key"
insecure_skip_verify: false
Validación de la configuración
Valide la configuración antes de iniciar:
# Validar la sintaxis del archivo de configuración
sslcat --config sslcat.conf --check
# Probar la configuración
sslcat --config sslcat.conf --test
# Iniciar el servicio
sslcat --config sslcat.conf
Monitoreo y depuración
SSLcat proporciona estadísticas detalladas del proxy:
- Estadísticas de conexión - Muestra el número de conexiones para cada proxy
- Tiempo de respuesta - Muestra estadísticas del tiempo de respuesta del backend
- Tasa de errores - Muestra la tasa de errores del proxy
- Estado de salud - Muestra el estado de salud del servicio backend
Mejores prácticas
Sugerencias para la configuración del reenvío inverso:
- Establecer tiempos de espera razonables - Establezca tiempos de espera adecuados según el rendimiento del servicio backend
- Habilitar la comprobación de estado - Asegure la disponibilidad de los servicios backend
- Configurar el equilibrio de carga - Mejore la disponibilidad y el rendimiento del servicio
- Monitorear los registros - Revise periódicamente los registros del proxy para optimizar la configuración
- Hacer una copia de seguridad de la configuración - Haga una copia de seguridad de los archivos de configuración importantes
Con estas configuraciones, puede configurar de forma flexible la función de reenvío inverso de SSLcat para satisfacer diversas y complejas necesidades comerciales.