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传递用户请求的协议和端口(frontend或backend),方便查看用户访问的端口号,不是必须的配置。以下两个方法二选一
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
时间: 2024-11-11 05:37:59