Haproxy маршрутизация в папках ACL для имени хоста / домена - PullRequest
0 голосов
/ 08 июля 2019

У меня проблема с конфигурацией Haproxy.В моей архитектуре мне хотелось бы, чтобы был только один Haproxy для 1000/2000 доменов.Ниже приведена конфигурация, работающая на одном домене:

global
        log /dev/log    local0
        log /dev/log    local1 notice
        chroot /var/lib/haproxy
        stats socket /run/haproxy/admin.sock mode 660 level admin
        stats timeout 30s
        user haproxy
        group haproxy
        daemon

        # Default SSL material locations
        ca-base /etc/ssl/certs
        crt-base /etc/ssl/private
        ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
        ssl-default-bind-options no-sslv3

defaults
        log     global
        mode    http
        option  httplog

        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 www_frontend
    bind *:80     # Bind to port 80 (www) on the container
    log /var/log/proxy local0 debug

    bind *:443 ssl crt /etc/ssl/sitetest.domain.io/sitetest.domain.io.pem ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4
     acl has_domain hdr(Host),map(/etc/haproxy/domain.map) -m found
     acl bypass-page url_reg -i -f /etc/haproxy/path.lst
     acl useragent-enable hdr(user-agent) -f /etc/haproxy/exact-ua.lst -i -f /etc/haproxy/generic-ua.lst test
     acl useragent-bypass hdr_reg(user-agent) -i -f /etc/haproxy/useragent.lst
     acl is_new_bck res.hdr(Set-Cookie) -m sub value=cookie_1
     acl is_service_v1 hdr_sub(cookie) -i -f /etc/haproxy/cookie.lst
     acl has_cookie hdr_sub(cookie) wordpress_logged_in_?
     acl has_cookie_1 hdr_reg(cookie) -i wordpress_logged_in_[a-z,0-9,A-Z]*.=.*

    use_backend %[req.hdr(host),lower,map_dom(/etc/haproxy/api.map,prod_cliente)] if !has_cookie_2 !bypass-page !useragent-bypass

default_backend prod_cliente
backend cache1_cluster
    option httpclose
    option forwardfor
    mode http
    cookie JSESSIONID prefix
#    balance roundrobin
#    option httpchk
#    option forwardfor
    server cache1 192.167.1.128:80 check


backend prod_cliente
        mode http
        option httplog
        option httpclose
        option forwardfor
    cookie JSESSIONID prefix
    server sitetest.domain.io PROD_IP:80 check

backend         not_found
                errorfile                   503 /etc/haproxy/errors/503.http

listen stats # Define a listen section called "stats"
  bind :9000 # Listen on localhost:9000
  mode http
  stats enable  # Enable stats page
  stats hide-version  # Hide HAProxy version
  stats realm Haproxy\ Statistics  # Title text for popup window
  stats uri /haproxy_stats  # Stats URI
  stats auth admin:admin  # Authentication credentials

Результат, которого я хотел бы достичь, заключается в том, что для каждого сайта списки ACL оцениваются по доменам, например:

acl has_cookie_1 hdr_reg (cookie) -i -f /etc/haproxy/DOMAINSITE/cookie.lst

тогда у меня есть скрипт, который динамически записывает файлы в каталоги DOMAINSITE.

Как вы думаете, это возможно?

1 Ответ

0 голосов
/ 09 июля 2019

Nobody?Я продолжаю получать синтаксические ошибки на ACL, я пытался использовать комбинацию бэкэнда, но проблема была бы для мультидомена по подтвержденному SSL?

...