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传递用户请求的协议和端口(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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,067评论 19 139
  • 一.HAProxy介绍 HAProxy: 是法国人Willy Tarreau开发的一个开源软件,是 一款应对客户端...
    楠人帮阅读 1,158评论 0 2
  • HAProxy简介HAProxy配置ACL配置TCP转发SSL转发 一、HAProxy简介: (一)HAProxy...
    哈喽别样阅读 1,579评论 0 0
  • 目录: HAProxy是什么 HAProxy的核心能力和关键特性 HAProxy的安装和运行 使用HAProxy搭...
    kelgon阅读 80,114评论 9 159
  • 互联网架构基础知识 一、网站常见架构 负载层 页面缓存层 web层 数据层 二、运维法则 缓存为王 尽量在前端(缓...
    魏镇坪阅读 4,872评论 0 9