LINUX.ORG.RU
ФорумAdmin

Настройка двух фрондендов на HAProxy, для 80 и 443 портов

 


0

1

Добрый день. Есть haproxy, настроен на 80 порту как балансировщик. Перенаправляет запросы разных доменов на разные машины.

Задача: хапрокси принимает запросы и на 80-й, и на 443-й порт и перенаправляет на разные хосты. При этом не обрабатывает ssl-запросы, а перекидывает на бекэнды (сертификаты на бекэндах и находятся)

С конфигом хапрокси перенаправление работает, но сам хапрокси ругается при проверке статуса.

Конфиг:

global
       log 127.0.0.1 local2 notice
       chroot /var/lib/haproxy
       user haproxy
       group haproxy
       daemon
       maxconn 10000
       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
       option  dontlognull
       retries 3
       option redispatch
       maxconn 10000
       option httpclose
       option forwardfor
       timeout connect 5000
       timeout client  50000
       timeout server  50000
       stats enable
       stats uri /haproxy
       stats realm Haproxy\ Statistics
       stats auth admin:123456
       stats refresh 30s
####### Описание секции frontend #######
frontend http-in
        bind 192.168.1.140:80
        redirect scheme https code 301 if { hdr_end(host) -i bbb159.domen.ru } !{ ssl_fc }
        acl othersite hdr(host) -i disk.domen.ru
        use_backend disk.domen if othersite

frontend https-in
      mode tcp
      option tcplog
      bind 192.168.1.140:443
        option socket-stats
        tcp-request inspect-delay 5s
        tcp-request content accept if { req_ssl_hello_type 1 }
        use_backend stn if { req_ssl_sni -i bbb159.domen.ru }
 default_backend stn
#####################################################################
backend stn
  mode tcp
  stick-table type binary len 32 size 30k expire 30m
  acl clienthello req_ssl_hello_type 1
  acl serverhello rep_ssl_hello_type 2
  tcp-request inspect-delay 5s
  tcp-request content accept if clienthello
  tcp-response content accept if serverhello
  stick on payload_lv(43,1) if clienthello
  stick store-response payload_lv(43,1) if serverhello
  option ssl-hello-chk
  server stn_container 192.168.1.159:443  ## note that when doing mode tcp, you do not need the ending `ssl`
#disk.domen.ru#
backend disk.domen
server server1 192.168.1.180:80

Ругается так:

янв 20 15:12:51 conf140 haproxy-systemd-wrapper[16109]: [WARNING] 019/151251 (16111) : config : 'stats' statement ignored for frontend 'https-in' as it requires HTTP mode.
янв 20 15:12:51 conf140 haproxy-systemd-wrapper[16109]: [WARNING] 019/151251 (16111) : config : 'option forwardfor' ignored for frontend 'https-in' as it requires HTTP mode.
янв 20 15:12:51 conf140 haproxy-systemd-wrapper[16109]: [WARNING] 019/151251 (16111) : config : 'stats' statement ignored for backend 'stn' as it requires HTTP mode.
янв 20 15:12:51 conf140 haproxy-systemd-wrapper[16109]: [WARNING] 019/151251 (16111) : config : 'option forwardfor' ignored for backend 'stn' as it requires HTTP mode.

В каких строках исправить ошибки, подскажите.

У вас в секции default прописано

option forwardfor
stats enable

При этом данные опции корректны только для фронтендов в режиме http, а у вас они применяются для всех фронтендов, в т.ч. для тех где mode tcp.

Решение - перенести данные опции внутрь секции frontend http-in. Как альтернатива можно указать no option forwardfor в секциях tcp фронтендов, но это не поможет со stats.

Hatifnatt
()
Ответ на: комментарий от Hatifnatt

Спасибо!! Ругаться перестал

Т.е. режим mode (tcp или http) в секции default действует для всех frontend'ов и backend'ов, в которых mode не прописаны

И если в каждом блоке будет свой mode (tcp - для ssl и http - для stats и option forwardfor), то в default может значится любой mode.

Спасибо вам, огромное!!!!

manik207
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.