HAProxy 将流量重定向到 NGINX 时出现错误“纯 HTTP 请求已发送到 HTTPS 端口”

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 流量 backend:3000 是我们的 nginx 服务器,设置为监听 SSL 连接

我们现在面临的问题是当我们进入https://example.com,浏览器显示以下错误:

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

当 haproxy 将流量转发到 nginx(后端:3000)时,它会转换为 http。

我认为“reqadd x-forwarded-proto:\ https”应该确保它是 https。

不确定我们的 haproxy 配置有什么问题。

答案1

将后端服务器规范更改为:

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

“ssl”部分定义后端使用 SSL,如果不存在 SSL,haproxy 将默认使用纯 HTTP。“verify none”禁用证书检查,您可能不想对内部服务器执行此操作。

相关内容