Прямой прокси HaProxy работает по HTTP, но дает 503 по HTTPS - PullRequest
0 голосов
/ 02 февраля 2020

Я ожидаю, что следующий конфиг получит HTTPS-запросы, выполнит разгрузку SSL и отправит HTTP-запросы моим бэкэндам, однако с HTTPS я получаю «503 служба недоступна».

  • все списки ACL работают правильно по HTTP, и на странице статистики они отображаются в режиме онлайн
  • Страница статистики работает правильно по HTTPS
  • Они все в docker составьте файл, docker правильно выполняет разрешение имен для внутреннего IP-адреса

Возможно, я упускаю что-то очевидное? Совершенно новичок в попытках сделать это, так что любая помощь приветствуется.

global
  tune.ssl.default-dh-param 2048

defaults
  mode http
  timeout connect 5000ms                  
  timeout client 50000ms                   
  timeout server 50000ms                   

backend certbot
  option httpchk GET /
  default-server init-addr libc,none
  server certbot_server certbot check port 80

backend client
  option httpchk HEAD /
  server client_server client check port 80

backend api               
  option httpchk OPTIONS /api/healthcheck
  server api_server api check port 80

frontend app
  bind *:80
  bind *:443 ssl crt /certs/productpedia.co.uk.pem

  use_backend certbot if { path_beg -i /.well-known/acme-challenge/ }                    
  use_backend api if { path_beg /api }
  default_backend client

  stats enable
  stats uri /stats
  stats refresh 10s
  stats admin if LOCALHOST

РЕДАКТИРОВАТЬ:

Приложена трассировка Wireshark из запроса 503, похоже, что сервер сбрасывает соединение, но не уверен, где Я могу go отсюда, или что может быть причиной этого?

enter image description here

1 Ответ

0 голосов
/ 03 февраля 2020

После полного дня отладки похоже, что простое указание порта 80 принесло свои плоды, хотя я ожидал, что порт по умолчанию будет 80, возможно, он переносит через порт по умолчанию 443? Я мог бы также избавиться от порта 80 после проверки после этого изменения, которое было первоначальной подсказкой триггера, что что-то может быть там не так.

backend certbot
  option httpchk GET /
  default-server init-addr libc,none
  server certbot_server certbot:80 check

backend client
  option httpchk HEAD /
  server client_server client:80 check

backend api               
  option httpchk OPTIONS /api/healthcheck
  server api_server api:80 check
...