У меня есть пара прокси-серверов HA в конфигурации главный / подчиненный с использованием keepalived.
Первоначально прокси HA работал, имея в качестве бэкэнда по умолчанию серверы HTTP и HTTPS, но за последний год их использование расширилось, и это не работает.
Изначально мы использовали это для направления HTTP- и HTTPS-запросов на несколько веб-серверов с помощью минимального подключения, и это было нормально.
Однако сейчас мы начали предлагать некоторым клиентам выделенный хостинг. Нам все еще нужен их DNS, чтобы указать на наш прокси-сервер HA, поэтому я рассмотрел использование ACL в haproxy cfg для перенаправления запросов на основе запрашиваемого доменного имени.
Я считал, что с помощью строки «acl host_ccp hdr (Host) www.example.com»
с участием
"use_backend CCP_S, если host_ccp"
затем будет использовать бэкэнд под названием CCPS и серверы, содержащиеся в нем.
backend CCP_S
balance leastconn
option httpclose
option forwardfor
server CCP_Server aaa.bbb.ccc.ddd:80 check weight 1
Однако это не работает для меня.
HTTPS очень похож.
Если я помещу сервер, на который я хочу, чтобы он перешел, в бэкэнд-область по умолчанию, он абсолютно работает (если это единственный сервер в этой области), но это остановит работу основных серверов.
Предполагается, что когда кто-то вводит определенный URL-адрес, haproxy отправляет его на конкретный сервер, если есть совпадение, или отправляет его на набор серверов по умолчанию, если его нет.
Я почти уверен, что это можно сделать, но я начал выдергивать свои (совсем немного левые) волосы.
Кто-нибудь может указать мне в правильном направлении, пожалуйста?
Спасибо
Стюарт
Код ниже
global
# log /var/lib/haproxy/dev/log local0 debug
# log /dev/log local0
#A
log 127.0.0.1 local0
log /dev/log local0 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin
stats timeout 30s
user haproxy
group haproxy
daemon
stats socket /var/run/haproxy.socket level admin
# Default SSL material locations
# 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/
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
##-------------------------------------------------------------------
## Enable stats for the whole of haproxy
##-------------------------------------------------------------------
listen haproxystats
bind 192.168.7.36:8090
mode http
stats enable # Switch stats on
stats hide-version # Don't display haproxy version
stats uri /stats # URL to view stats
stats refresh 3s # Automatically refresh the page for us
frontend Public_ServerFarm
bind 192.168.7.61:80
default_backend PublicWEB
log /var/lib/haproxy/dev/log local0 debug
acl host_ccp hdr(host) -i www.a.com a.com
acl block_7 src 192.168.7.250 192.168.7.13 192.168.7.18 192.168.7.41
acl host_garageshoes hdr(host) -i www.b.co.uk b.co.uk
acl host_u33c hdr(host) -i c.co.uk c.co.uk
use_backend block_7_hosts if block_7
use_backend b if host_b
use_backend CCP_Scaleway if host_ccp
use_backend uchristmas if host_u33c
backend garageshoes
balance leastconn
option httpclose
option forwardfor
server publicwebwoo01 192.168.7.42:80 check weight 1
backend CCP_Scaleway
balance leastconn
option httpclose
option forwardfor
server CCP_Server 100.101.102.103:80 check weight 1
backend uchristmas
balance leastconn
option httpclose
option forwardfor
server plat2_woo1 192.168.7.68:80 check weight 1
backend block_7_hosts
option httpchk # Do HTTP checks, not just L4
option forwardfor header X-Client
option httpclose
option forwardfor
balance leastconn
############################## LINUX SERVERS ##############################
server PublicWebWoo02 192.168.7.19:80 check weight 1
server PublicWebWooAPI01 192.168.7.44:80 check weight 1
server PublicWebWooCCP 192.168.7.35:80 check weight 1
##############################################################################
backend PublicWEB
option httpchk # Do HTTP checks, not just L4
option forwardfor header X-Client
option httpclose
option forwardfor
balance leastconn
mode http
############################## LINUX SERVERS ##############################
server PublicWebWoo06 192.168.7.39:80 check weight 10
server PublicWebWoo07 192.168.7.40:80 check weight 10
server PublicWebWoo01 192.168.7.42:80 check weight 10
server PublicWebWoo03 192.168.7.59:80 check weight 10
##############################################################################
frontend Public_ServerFarmSSL
bind 192.168.7.61:443
default_backend PublicWEBSSL
option tcplog
mode tcp
log /var/lib/haproxy/dev/log local0 debug
acl host_ccp_SSL hdr(host) -i www.a.com a.com
acl block_7_SSL src 192.168.7.250 192.168.7.13 192.168.7.18 192.168.7.41
acl host_b_SSL hdr(host) -i www.b.co.uk b.co.uk
acl host_u33c_SSL hdr(host) -i www.c.co.uk c.co.uk
use_backend b_SSL if host_b_SSL
use_backend block_7_hosts_SSL if block_7_SSL
use_backend CCP_Scaleway_SSL if host_ccp_SSL
use_backend uchristmas_SSL if host_u33c_SSL
backend CCP_Scaleway_SSL
balance leastconn
option httpclose
option forwardfor
server CCP_Server 100.101.102.103:443 check weight 1
backend uchristmas_SSL
balance leastconn
option httpclose
option forwardfor
server plat2_woo1 192.168.7.68:443 check weight 1
backend PublicWEBSSL
balance source
option ssl-hello-chk
mode tcp
############################## LINUX SERVERS SSL ##############################
server PublicWebWoo06 192.168.7.39:443 check weight 10
server PublicWebWoo07 192.168.7.40:443 check weight 10
server PublicWebWoo01 192.168.7.42:443 check weight 10
server PublicWebWoo03 192.168.7.59:443 check weight 10
backend b_SSL
balance leastconn
option httpclose
option forwardfor
server publicwebwoo01 192.168.7.42:443 check weight 1
backend block_7_hosts_SSL
balance leastconn
option ssl-hello-chk
mode tcp
# option httpchk # Do HTTP checks, not just L4
# option forwardfor header X-Client
option httpclose
option forwardfor
############################## LINUX SERVERS ##############################
server PublicWebWoo02 192.168.7.19:443 check weight 1
server PublicWebWooAPI01 192.168.7.44:443 check weight 1
server PublicWebWooCCP 192.168.7.35:443 check weight 1
##############################################################################