Рейтинг:0

Справка Haproxy для запросов https на пользовательских портах

флаг fr

Мы хотели бы использовать haproxy ingress 1.7 в kubernetes для прослушивания порта 55560 для соединения https.

Не могли бы вы помочь в этом отношении?

Вот мой файл haproxy.cfg. При попытке доступа получаю curl: (35) OpenSSL SSL_connect: SSL_ERROR_SYSCALL в ошибке соединения.

HTTPS на 443 работает нормально.

С уважением, Калян

# _версия=5
# Технологии HAProxy
# https://www.haproxy.com/
# этот файл не предназначен для прямого изменения
# он находится под управлением входного контроллера haproxy

Глобальный 
  локальный локальный
  мастер
  pid-файл /var/run/haproxy.pid
  сокет статистики /var/run/haproxy-runtime-api.sock уровень слушателей expose-fd admin
  статистика тайм-аут 1м
  setup.ssl.default-dh-параметр 2048
  ssl-default-bind-options no-sslv3 no-tls-tickets no-tlsv10
  ssl-default-bind-ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA -AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128 -SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA :DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES :!MD5:!PSK
  демон формата log stdout
  глобальный файл состояния сервера
  сервер-состояние-база /var/state/haproxy/

значения по умолчанию 
  журнал глобальный
  log-format '%ci:%cp [%tr] %ft %b/%s %TR/%Tw/%Tc/%Tr/%Ta %ST %B %CC %CS %tsc %ac/%fc/ %bc/%sc/%rc %sq/%bq %hr %hs "%HM %[var(txn.base)] %HV"'
  опция повторной отправки
  опция
  опция http-keep-alive
  таймаут http-запроса 5s
  тайм-аут соединения 5s
  таймаут клиента 50s
  очередь ожидания 5 с
  тайм-аут сервера 50s
  тайм-аут туннеля 1h
  таймаут http-keep-alive 1м
  глобальная загрузка состояния сервера из файла

локальный экземпляр сверстников 
  одноранговый локальный 127.0.0.1:10000

внешний интерфейс 
  режим http
  привязать 0.0.0.0:1042 имя v4
  привязать ::: 1042 имя v6 v4v6
  монитор-ури /healthz
  опция dontlog-нормальный

интерфейс http 
  режим http
  привязать 0.0.0.0:80 имя v4
  привязать :::80 имя v6
  соединение tcp-запроса ожидаемый прокси-уровень 4, если {src -f /etc/haproxy/maps/proxy-protocol-827c05ecc804eacf23a63899ca0ffcf6.map}
  база http-запроса set-var(txn.base)
  http-запрос set-var(txn.path) путь
  http-запрос set-var(txn.host) req.hdr(Host),field(1,:),нижний
  http-запрос set-var(txn.host_match) var(txn.host),map(/etc/haproxy/maps/host.map)
  http-запрос set-var(txn.host_match) var(txn.host),regsub(^[^.]*,,),map(/etc/haproxy/maps/host.map,'') if !{ var (txn.host_match) -m найдено }
  http-запрос set-var(txn.path_match) var(txn.host_match),concat(,txn.path,),map(/etc/haproxy/maps/path-exact.map)
  http-запрос set-var(txn.path_match) var(txn.host_match),concat(,txn.path,),map_beg(/etc/haproxy/maps/path-prefix.map) if !{ var(txn.path_match ) -m найдено }
  use_backend %[var(txn.path_match),поле(1,.)]
  default_backend default-default-ingress-default-backend-port-1

интерфейс https 
  режим http
  bind 127.0.0.1:443 name v4 accept-proxy
  bind :: 1: 443 имя v6 v4v6 принять-прокси
  база http-запроса set-var(txn.base)
  http-запрос set-var(txn.path) путь
  http-запрос set-var(txn.host) req.hdr(Host),field(1,:),нижний
  http-запрос set-var(txn.host_match) var(txn.host),map(/etc/haproxy/maps/host.map)
  http-запрос set-var(txn.host_match) var(txn.host),regsub(^[^.]*,,),map(/etc/haproxy/maps/host.map,'') if !{ var (txn.host_match) -m найдено }
  http-запрос set-var(txn.path_match) var(txn.host_match),concat(,txn.path,),map(/etc/haproxy/maps/path-exact.map)
  http-запрос set-var(txn.path_match) var(txn.host_match),concat(,txn.path,),map_beg(/etc/haproxy/maps/path-prefix.map) if !{ var(txn.path_match ) -m найдено }
  http-запрос set-header X-Forwarded-Proto https
  use_backend %[var(txn.path_match),поле(1,.)]
  default_backend default-default-ingress-default-backend-port-1

внешний ssl 
  режим TCP
  привязать 0.0.0.0:443 имя v4
  привязать :::443 имя v6 v4v6
  формат журнала '%ci:%cp [%t] %ft %b/%s %Tw/%Tc/%Tt %B %ts %ac/%fc/%bc/%sc/%rc %sq/% bq %hr %hs haproxy.MAP_SNI: %[var(sess.sni)]'
  Содержимое tcp-запроса отклоняется, если !{ req_ssl_hello_type 1 }
  TCP-запрос проверка-задержка 50000
  соединение tcp-запроса ожидаемый прокси-уровень 4, если {src -f /etc/haproxy/maps/proxy-protocol-827c05ecc804eacf23a63899ca0ffcf6.map}
  tcp-запрос содержимого set-var (sess.sni) req_ssl_sni
  tcp-request content set-var(txn.sni_match) req_ssl_sni,map(/etc/haproxy/maps/sni.map)
  tcp-request content set-var(txn.sni_match) req_ssl_sni,regsub(^[^.]*,,),map(/etc/haproxy/maps/sni.map)
  use_backend %[var(txn.sni_match),поле(1,.)]
  default_backend ssl

статистика внешнего интерфейса 
  режим http
  привязать *:1024
  привязать ::: 1024 имя v6
  включить статистику
  статистика ури /
  статистика обновляется 10 секунд
  база http-запроса set-var(txn.base)
  http-запрос использовать сервис prometheus-exporter, если {path/metrics}

интерфейс TCP-55560 
  режим TCP
  привязать 0.0.0.0:55560 имя v4
  привязать ::: 55560 имя v6 v4v6
  опция tcplog
  default_backend default-rapid-po-service-55560

серверная часть по умолчанию-ic-http-service-80 
  режим http
  круговой баланс
  опцион вперед для
  последний адрес инициализации сервера по умолчанию, libc, нет
  сервер SRV_1 xxxxxxxxxxx.com:80 контрольный вес 128

бэкэнд по умолчанию-по умолчанию-вход-по умолчанию-бэкэнд-порт-1 
  режим http
  круговой баланс
  опцион вперед для
  сервер SRV_1 10.119.58.166:8080 контрольный вес 128
  сервер SRV_2 127.0.0.1:8080 отключен контрольный вес 128

серверная часть по умолчанию-rapid-po-service-55560 
  режим TCP
  круговой баланс
  последний адрес инициализации сервера по умолчанию, libc, нет
  сервер SRV_1 xxxxxxx:55560 контрольный вес 128

бэкэнд-быстрое-обслуживание-44448 по умолчанию 
  режим TCP
  круговой баланс
  последний адрес инициализации сервера по умолчанию, libc, нет
  сервер SRV_1 xxxxxxxxxx:44448 контрольный вес 128

серверная часть по умолчанию-образец-http-service-80 
  режим http
  круговой баланс
  опцион вперед для
  последний адрес инициализации сервера по умолчанию, libc, нет
  сервер SRV_1 xxxxxxxxxxxx:80 контрольный вес 128

бэкэнд по умолчанию-образец-https-service-443 
  режим TCP
  круговой баланс
  последний адрес инициализации сервера по умолчанию, libc, нет
  сервер SRV_1 xxxxxxxxxxxx:443 контрольный вес 128

бэкенд ssl 
  режим TCP
  сервер https 127.0.0.1:443 send-proxy-v2
флаг in
`Вот мой файл haproxy.cfg` вы, кажется, забыли это.
флаг fr
Спасибо @GeraldSchneider, я добавил, не могли бы вы помочь мне в этом случае
флаг in
Вы настроили haproxy для передачи трафика на серверную часть без прерывания SSL. Проблема в вашей серверной службе, а не в haproxy.
флаг fr
@GeraldSchneider, большое спасибо за ответ. Не могли бы вы подсказать, как выполнить терминацию SSL.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.