我想在 HAProxy 终止 SSL,对标头进行一些操作,重写 URL 并重新加密流量并以 SSL 的形式发送到后端服务器?
我似乎找不到办法做到这一点。我可以完成常规 SSL 终止,并向后端发送纯 HTTP 请求。但我需要将 SSL 发送到后端。
我希望具有以下功能:
- 提取 x-forwarded-for 标头,以获取代理后面的真实客户端 IP。
- 使用 cookie 实现会话粘性。
- 进行一些 URL 重写。
- 使用基于 cookie 的会话粘性将 SSL 流量发送到后端。
除非我在 haproxy 端终止 SSL,否则我无法完成 URL 重写。
如果这里任何好心人能提供帮助,我都会非常感激。
答案1
haproxy.cfg 中没有什么特别的操作。您只需在 HAProxy 前端中配置所需的任何 URL 重写和标头操作,然后将流量重定向到 SSL 后端。以下是一个简单的示例:
frontend app1_ssl
bind *:443 ssl crt /etc/haproxy/certs.d/example.com.crt crt /etc/haproxy/certs.d/ no-sslv3
option http-server-close
option forwardfor
http-request add-header X-Forwarded-Proto https
http-request add-header X-Forwarded-Port 443
# set HTTP Strict Transport Security (HTST) header
http-response add-header Strict-Transport-Security max-age=15768000
# some ACLs and URL rewrites...
default_backend backend_app1_ssl
backend backend_app1_ssl
server mybackendserver 127.0.0.1:4433 ssl verify none