HAProxy 之 实现https访问

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HAProxy 之 实现https访问相关的知识,希望对你有一定的参考价值。

1  概述


启用https将使得服务器的性能大大降低,如果后端的服务器压力较大或者性能不够,启用web server上启用https将对服务器造成更大的压力,但是为了安全的考量,启用https将是非常关键的。所以,这里有个折中的方法,当用户到达haproxy这里的访问是在公网环境,通过https进行访问,而从haproxy到达后端服务器属于企业的局域网中,我们认为是相对安全的,所以通过haprxoy服务器上redirect的功能,将客户端访问的请求全部转换为https,同时将该https的请求转换为http请求来访问后端服务器。


2  配置HAProxy支持https协议


2.1  通过自签名生成证书文件

证书文件为PEM格式,要求把私钥和证书文件放在一起,自签名生成证书文件,用如下命令实现,在HA上配置,RS上不用生成证书文件,后端走HTTP协议

cd /etc/pki/tls/certs/
make /etc/haproxy/haproxy.pem

#以上命令将生成私钥和证书文件都放在一起pem文件,而且直接放置在/etc/haproxy/这个路径下

如果向CA申请的证书文件,需要用如下命令将证书和私钥打包成一份

cat  haproxy.crthaproxy.key > haproxy.pem

2.2  支持ssl会话

指定证书文件的路径,并重定向80端口到443端口

绑定端口格式

bind *:443 ssl crt  /PATH/TO/SOME_PEM_FILE

例子

bind *:80
bind *:443 ssl crt  /etc/haproxy/haproxy.pem
redirect scheme https if !{ ssl_fc}

redirect当访问80端口时自动跳转到443

2.3  log 记录

向后端log传递用户请求的协议和端口(frontendbackend),方便查看用户访问的端口号,不是必须的配置。以下两个方法二选一

http-request  set-header X-Forwarded-Port %[dst_port]
http-request  add-header X-Forwared-Proto https if {ssl_fc}

 set-header设置表示如果存在就覆盖原信息,X-Forwarded-Port是格式的自定义的名字,这里是根据源端口来设置,如源端口是443,就添加为443,HA收到请求的时候,就会把HA访问后台RS用的端口号转发到后台的服务器

add-header不管原来是否有什么格式,都添加上去,X-Forwared-Proto是格式的名字,log里定义需要调用的名字,log加上去的内容为https

RS定义log

LogFormat "%h %l %u%t \"%r\" %>s %b \"%{Referer}i\"\"%{User-Agent}i\"  \"%{X-Forwared-Proto} i\"" combined


本文出自 “阳光运维” 博客,请务必保留此出处http://ghbsunny.blog.51cto.com/7759574/1978999

以上是关于HAProxy 之 实现https访问的主要内容,如果未能解决你的问题,请参考以下文章

HAproxy指南之haproxy重定向配置(案例篇)

http反向代理及haproxy

负载均衡之haproxy-----haproxy负载均衡+pcs高可用+fence

HAProxy 之 ACL介绍和使用

企业运维之七层负载均衡--Haproxy

企业运维之七层负载均衡--Haproxy