码迷,mamicode.com
首页 > Web开发 > 详细

HAProxy 之 实现https访问

时间:2017-11-04 23:35:43      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:https   haprxoy   

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访问

标签:https   haprxoy   

原文地址:http://ghbsunny.blog.51cto.com/7759574/1978999

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!