Назад | Перейти на главную страницу

Использование Haproxy в качестве TCP-интерфейса к Nginx (SSL), OpenVPN и OpenSSH. Время ожидания, нет связи

Я пытаюсь настроить Haproxy для работы на общедоступном порте 443 и отправлять TCP-трафик в нужное место следующим образом:

Я думаю, что моя конфигурация довольно близка, но почему-то я не могу заставить ее работать. Мои веб-запросы просто истекли.

Что я делаю не так?

global
  log /dev/log  local0 debug # TURN OFF DEBUG!
  log /dev/log  local1 notice
  #log loghost   local0 info
  maxconn 1024

defaults
  log   global
  mode  http
  option   httplog
  option   dontlognull
  option   tcplog
  retries  3
  option redispatch
  maxconn  2000
  timeout connect  5000
  timeout client  50000
  timeout server  50000

listen HAProxy-Statistics
  bind *:1936
  mode http
  option httplog
  option httpclose
  stats enable
  stats uri /
  stats refresh 10s
  stats show-node
  stats show-legends
  stats show-desc Haproxy Frontend
  stats auth admin:admin

frontend ssl_relay
  bind 0.0.0.0:443 name frontend-ssl
  mode tcp
  option tcplog
  option socket-stats
  # option nolinger
  maxconn  300
  log /dev/log local0 debug # overkill! turn this off when not needed

  tcp-request inspect-delay 5s
  tcp-request content accept if { req_ssl_hello_type 1 }

  use_backend https_one if  { req_ssl_sni -i home.example.com }
  use_backend https_two if  { req_ssl_sni -i nc.example.com }
  use_backend openvpn   if !{ req.len 0 }
  use_backend openssh   if  { req.len 0 }
  default_backend https_one

backend https_one
  mode tcp
  server home-https-server 10.0.0.4:4443 send-proxy

backend https_two
  mode tcp
  server nc-https-server 10.0.0.4:4444 send-proxy

backend openvpn
    mode tcp
    server openvpn-server 10.0.0.4:1194

backend openssh
    mode tcp
    server openssh-server 10.0.0.5:22

Говоря об OpenVPN, я пришел к выводу, что отказываться от него контрпродуктивно.

  1. У вас не будет постоянного сеанса, и если бэкэнд выйдет из строя, и вы были подключены к этому бэкэнду, вам все равно нужно повторно подключиться.
  2. OpenVPN поставляется с простой в использовании опцией балансировки нагрузки / аварийного переключения (я не уверен, что она даже автоматически переподключается при выходе из строя одного сервера):
remote server1.mydomain
remote server2.mydomain
remote server3.mydomain
remote-random
  1. HAProxy заставляет вас использовать TCP вместо UDP, что означает, что вы дважды встряхиваете пакет: для туннеля и для пакета, инкапсулированного в туннель.