我们正在尝试让 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”禁用证书检查,您可能不想对内部服务器执行此操作。