Мы пытаемся настроить 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. «Не проверять» отключает проверку сертификатов, что вы, вероятно, в любом случае не хотите делать со своими внутренними серверами.