HAProxy终止SSL还将SSL发送到后端服务器


14

我想在HAProxy处终止SSL,对标头进行一些操作,重写URL并重新加密流量,然后以SSL的形式发送到后端服务器吗?

我似乎找不到解决方法。我可以完成常规的SSL终止,然后将纯HTTP请求发送到后端。但是我需要将SSL发送到后端。

我希望具有以下功能:

  • 提取x-for-for标头,以获取代理后面的真实客户端IP。
  • 使用cookie实现会话粘性。
  • 做一些URL重写。
  • 使用基于cookie的会话粘性将SSL流量发送到后端。

除非我在haproxy端终止SSL,否则无法完成URL重写。

这里的好人的任何帮助将不胜感激。


1
您能发布当前的配置,并告诉我们哪些不起作用吗?
GregL 2015年

Answers:


30

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
    reqadd X-Forwarded-Proto:\ https
    reqadd X-Forwarded-Port:\ 443

    # set HTTP Strict Transport Security (HTST) header
    rspadd  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

1
太棒了!让我尝试一下。我无法在任何地方找到“ server .... ssl”东西。
oazabir

非常感谢您的帮助。我能够使它工作。但是,我无法让SSL正常工作。你能帮忙吗?问题在这里:serverfault.com/questions/738397/…–
oazabir

太好了,很高兴我能提供帮助。不要忘了接受我的回答,以便其他人可以立即看到它是有帮助的;-)
Tubeless

通过给ssl验证不加密,加密是否真的有效?从haproxy文档中,“如果设置为'none',则不验证服务器证书。在另一种情况下,使用'ca-file'中的CA验证服务器提供的证书。有人可以澄清一下吗?
mjm

随着ssl verify noneHAProxy的和后端服务器之间的流量仍然是加密的,但后端的SSL证书的有效性并不被检验。
Tubeless
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.