Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    HAProxy, разъясните пару вопросов.

    Scheduled Pinned Locked Moved Russian
    16 Posts 2 Posters 3.1k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • V
      vladimirlind
      last edited by

      Покажите ваш текущий конфиг на haproxy - в Service > Haproxy > Settings - внизу есть кнопка "Show" - automatically generated configuration - content of /var/etc/haproxy/haproxy.cfg

      K 1 Reply Last reply Reply Quote 0
      • K
        k0st1k @vladimirlind
        last edited by k0st1k

        @vladimirlind
        Причем я добился того что присходит редирект на портале с http на https, но все стопорится на том что неверный сертификат(на прямую через порт маппинг работает без проблем).

        Automaticaly generated, dont edit manually.

        Generated on: 2019-04-24 16:12

        global
        maxconn 1000
        stats socket /tmp/haproxy.socket level admin
        gid 80
        nbproc 1
        hard-stop-after 15m
        chroot /tmp/haproxy_chroot
        daemon
        server-state-file /tmp/haproxy_server_state

        listen HAProxyLocalStats
        bind 127.0.0.1:2192 name localstats
        mode http
        stats enable
        stats admin if TRUE
        stats show-legends
        stats uri /haproxy/haproxy_stats.php?haproxystats=1
        timeout client 5000
        timeout connect 5000
        timeout server 5000

        frontend http
        bind 82.142.165.226:80 name 82.142.165.226:80
        mode http
        log global
        option http-keep-alive
        maxconn 500
        timeout client 30000
        acl httpRedirectACL var(txn.txnhost) -m str -i er.vokod34.ru
        http-request set-var(txn.txnhost) hdr(host)
        http-request redirect scheme https if httpRedirectACL
        default_backend help.vokod34.ru_ipvANY

        frontend https
        bind 82.142.165.226:443 name 82.142.165.226:443
        mode tcp
        log global
        timeout client 30000
        tcp-request inspect-delay 5s
        acl er req.ssl_sni -i er.vokod34.ru
        tcp-request content accept if { req.ssl_hello_type 1 }
        use_backend er.vokod34.ru_ipv4 if er

        backend help.vokod34.ru_ipvANY
        mode http
        id 100
        log global
        timeout connect 30000
        timeout server 30000
        retries 3
        server help.vokod34.ru 193.125.5.27:80 id 101 weight 50

        backend er.vokod34.ru_ipv4
        mode tcp
        id 10102
        log global
        timeout connect 30000
        timeout server 30000
        retries 3
        source ipv4@ usesrc clientip
        server er.vokod34.ru 193.125.5.9:443 id 10104 ssl weight 50 verify none

        1 Reply Last reply Reply Quote 0
        • V
          vladimirlind
          last edited by

          @k0st1k said in HAProxy, разъясните пару вопросов.:

          acl er req.ssl_sni -i er.vokod34.ru
          tcp-request content accept if { req.ssl_hello_type 1 }

          Если неправильный сертификат - то, наверное, маршрутизация по acl на фронтенде не срабатывает. Сертификат какой, вебгуя пфсенса? Скриншот настроек acl на фронтенде https было бы интересно посмотреть.

          K 2 Replies Last reply Reply Quote 0
          • K
            k0st1k @vladimirlind
            last edited by

            @vladimirlind скрин с утра сделаю, для понимания, использовать сертификат сайта не выйдет? придется свой подсовывать?

            V 1 Reply Last reply Reply Quote 0
            • K
              k0st1k @vladimirlind
              last edited by

              @vladimirlind alc.PNG

              1 Reply Last reply Reply Quote 0
              • V
                vladimirlind @k0st1k
                last edited by

                @k0st1k В текущей конфигурации у вас SSL устанавливается между сервером и клиентом, без терминации на haproxy. Можно использовать режим SSL offloading - для того того, чтобы SSL сессия клиента перехватывалась haproxy, на котором был бы установлен сертификат сайта. В этом случае надо сертификат сайта импортировать на пфсенс и указать его на фронтенде.
                Вы говорите - неверный сертификат при попытке зайти на сайт - а какой сертификат?
                Если на фронтенде https убрать ACL и установить на нем er.vokod34.ru_ipv4 как дефолтный бекенд - будет работать?

                1 Reply Last reply Reply Quote 0
                • V
                  vladimirlind
                  last edited by

                  Если терминировать SSL на haproxy, то стоит попробовать ssl_fc_sni вместо req.ssl_sni в АСL:

                  e972ed6f-c8d6-4b6c-96d3-e802615ea539-image.png

                  K 1 Reply Last reply Reply Quote 0
                  • K
                    k0st1k @vladimirlind
                    last edited by

                    @vladimirlind доковыярл настройки на столько что откат конфига не спасает и отваливаются правила фаервола) на праздниках планирую переставить с нуля и импортировать бэкапом часть основных настроек.
                    Как Подскажите как правильно отстроить.
                    Как я вижу порядок:
                    1.в бэкенд добавляю нужные ресурсы вида ИП*порт.
                    2. в фронтенд добавляется правило перекидывания.
                    необходимо ли дополнительно настраивать NAT?

                    1 Reply Last reply Reply Quote 0
                    • V
                      vladimirlind
                      last edited by

                      HAproxy проксирует запросы, приходящие на айпи:порт, указанные на фронтенде с учетом правил ACL, если таковые настроены, на сервер(ы) в в бекенде (тоже с учетом правил, если таковые настроены). Как правило, на фронтенде указывается айпи внешнего интерфейса, а на бекенде - айпи серваков во внутренней сети. Правил НАТ никаких делать не надо.

                      1 Reply Last reply Reply Quote 0
                      • K
                        k0st1k
                        last edited by k0st1k

                        Вот пример бэкенда для сервиса https, все верно?
                        для каждой пары ип+порт свой бэкенд или в один добавлять как альяс?
                        8f1a42f7-0dd2-4ad3-9474-3680115046fc-изображение.png
                        a237a79e-397b-47a5-b1ce-3a77ab83afda-изображение.png
                        787ac073-0551-4628-9f9a-527cfe3481c1-изображение.png

                        1 Reply Last reply Reply Quote 0
                        • V
                          vladimirlind
                          last edited by

                          сложно сказать - айпи сервера бекенда внешний? Ок, может на то есть причина. Если серверов бекенда несколько - то можно балансировать трафик между ними. Тут много возможностей и вариантов, все зависит от желаемого результата.

                          1 Reply Last reply Reply Quote 0
                          • K
                            k0st1k
                            last edited by

                            Нужна одна реализация
                            domain.ru - 85.125.125.125
                            er.domain.ru - 85.125.125.125 (но во внутренней сети свой адрес, в примере 193.125.5.9)
                            post.domain.ru - 85.125.125.125 (так же свой 193.125.5.4)
                            cloud.domain.ru - 85.125.125.125 (так же свой 193.125.5.2)

                            адресация 193.125.5.* внутренняя( не я её придумал такой) порталы все разные гдето есть ssl гдето нет.

                            1 Reply Last reply Reply Quote 0
                            • V
                              vladimirlind
                              last edited by vladimirlind

                              Я так понимаю, фронтенд один для 85.125.125.125:443 (ну, + еще 80 фронтенд для перенаправления на 443), и с помощью трех правил ACL разруливать на три разных бекенда: если обращение идет к er.domain.ru -> бкенед с 193.125.5.9 и так далее для остальных. Тут еще SSL offloading на фронтенде просится с wildcard сертификатом для *.domain.ru

                              K 1 Reply Last reply Reply Quote 0
                              • K
                                k0st1k @vladimirlind
                                last edited by

                                @vladimirlind не совсем, просто по найду на фронтенде был настроен переброс с http на https, а так нам необходимо чтобы отдельно http и https(переброс сделан на стороне веб сервера если требуется).

                                1 Reply Last reply Reply Quote 0
                                • First post
                                  Last post
                                Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.