haproxy 1.7 перенаправление и отклонение некоторых IP-адресов

Чтобы перенаправить несколько поддоменов с одного IP на разные хосты, я использую haproxy (1.7.5, стабильный Debian), и он отлично работает . Однако я также хочу ограничить доступ к некоторым хостам по IP и отображать чистое сообщение (правильная страница ошибки 403) для отклоненных хостов, и здесь я не могу найти решение.

Лучшее, что я до сих пор есть конфигурация, использующая бэкэнд «отклонения»; однако я не знаю, как настроить это, чтобы получать что-либо, кроме ошибок SSL со стороны браузера.

Конфигурация выглядит так:

frontend http_redirect
    bind *:80
    redirect scheme https if !{ ssl_fc }

frontend tls_router
    bind *:443
    mode tcp
    option tcplog
    option tcpka

    acl demo_acl req_ssl_sni -i demo.myhost.org
    acl www_acl req_ssl_sni -i www.myhost.org
    acl demo_network_allowed src 10.1.1.0/24

    use_backend demo_tls if demo_acl
    use_backend wwww_tls if www_acl
    use_backend reject_access if demo_acl !demo_network_allowed

backend www_tls
    mode tcp
    option tcpka
    server www_srv 192.168.1.2:443

backend demo_tls
    mode tcp
    option tcpka
    server demo_srv 192.168.1.3:443

backend reject_access
    mode http
    # errorfile 403 /etc/haproxy/errors/403.http
    # server demo  192.168.1.2:443
    http-request set-path www.myhost.org/403.html
    http-request redirect scheme https if ! { ssl_fc }

Как видно из бэкэнда "reject_access", я попробовал несколько вещей с тот же результат:

$ LANG=C wget  --no-check-certificate -S https://demo.myhost.org
--2019-07-01 18:48:31--  https://demo.host.org/
Résolution de demo.myhost.org? 10.12.24.1
Connexion à demo.myhost.org|10.12.24.1|:443? connecté.
OpenSSL: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
Incapable d'établir une connexion SSL.

Любая помощь в этой конфигурации приветствуется.

0
задан 1 July 2019 в 19:48
1 ответ

Вы не можете изменить URL-адрес для запроса ssl в режиме TCP. Вы должны завершить ssl в haproxy

. Ошибка говорит о невозможности установить ssl-соединение. Бэкэнд Reject отправляет http-запрос к 443

Edit , пример завершения SSL

frontend https443
        bind *:443 ssl crt someWildacrd.pem
        #http-request set-log-level silent

        #SSL is terminated, we can see URL path
        acl restricted_page path_beg,url_dec -i /admin
        http-request deny if restricted_page

        default_backend b_http
2
ответ дан 4 December 2019 в 13:19

Теги

Похожие вопросы