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

HAProxy перенаправляет трафик на NGINX с ошибкой «Простой HTTP-запрос был отправлен на HTTPS-порт»

Мы пытаемся настроить HAProxy для прослушивания всего входящего трафика с порта 443 (HTTPS и WSS).

Ниже представлена ​​наша конфигурация HAProxy:

frontend wwws
  bind 0.0.0.0:443 ssl crt /etc/haproxy/server.pem
  timeout client 1h
  default_backend www_backend

backend www_backend
  mode http
  stats enable
  stats uri /haproxy
  option forwardfor
  reqadd x-forwarded-proto:\ https

  server server1 backend:3000 weight 1 maxconn 8192 check

0.0.0.0:443 (например, https://example.com) - это наш прокси-сервер HA, который прослушивает весь входящий трафик 443, бэкэнд: 3000 - это наш сервер nginx, который настроен на прослушивание SSL-соединений

Текущая проблема, с которой мы сейчас сталкиваемся, - это когда мы входим https://example.com, браузер показывает следующую ошибку:

400 Bad Request
The plain HTTP request was sent to HTTPS port
nginx/1.7.5

Кажется, что когда haproxy перенаправляет трафик на nginx (backend: 3000), он преобразуется в http.

Я думал, что «reqadd x-forwarded-proto: \ https» должен убедиться, что это https.

Не уверен, что не так с нашей конфигурацией haproxy.

Измените спецификацию внутреннего сервера на это:

server server1 backend:3000 weight 1 maxconn 8192 check ssl verify none

Часть "ssl" определяет, что серверная часть использует SSL, если его нет, haproxy по умолчанию будет использовать обычный HTTP. «Не проверять» отключает проверку сертификатов, что вы, вероятно, в любом случае не хотите делать со своими внутренними серверами.