0
点赞
收藏
分享

微信扫一扫

使用HAProxy实现https

    HAProxy可以实现https功能,即客户端到HAProxy服务器之间使用https通信,而HAProxy服务器与后端服务器之间使用http通信。不过这种操作会增加HAProxy服务器的工作压力,生产中不建议进行此类操作,而是建议将https功能的实现放到后端Nginx服务器或其他服务器上。

    此次实验,笔者准备4台主机,一台作为测试使用的客户端,取名client;一台编译安装好2.4.17版本HAProxy服务的主机作为代理服务器,取名haproxy;两台作为后端web服务器,取名real-server1和real-server2。

  1. 后端服务器准备

    real-server1和real-server2均安装并启动Apache服务,为了方便区分,网站默认首页均显示各自ip。

使用HAProxy实现https_客户端

使用HAProxy实现https_重定向_02

使用HAProxy实现https_重定向_03


  1. 生成自签名证书

    要想实现https功能,HAProxy服务器先要针对服务生成自签名证书。虽然笔者的HAProxy是在CentOS7上部署的,不过CentOS7也快结束生命周期了,所以就不使用make命令生成证书,还是使用正常的自签名证书命令来生成www.johnnyfang,com域名所对应的证书文件和私钥文件。

    Nginx服务在实现https功能时也要添加证书路径,而且是证书文件和私钥文件两项,而在HAProxy服务器中,需要将生成的两个文件需要进行合并,并且需要是pem后缀。

使用HAProxy实现https_客户端_04


  1. HAProxy实现https

    HAProxy除了在配置文件中设置80监听端口外,还要添加443的监听端口,并且要填写ssl加密证书的路径,其他配置项与正常的listen配置方式无太大区别。

使用HAProxy实现https_客户端_05

    此时客户端通过Linux主机或浏览器去访问时,是按照HAProxy默认的roundrobin算法进行动态轮询调度的。

使用HAProxy实现https_服务器_06

使用HAProxy实现https_服务器_07

使用HAProxy实现https_服务器_08


  1. https强制跳转访问

    用户行为习惯决定了多数用户在访问web服务时是直接使用http与代理服务器通信的,上周的作业我们了解到Nginx作为代理服务器可以进行端口重定向,实现https的强制跳转,在HAProxy服务器中,我们同样可以进行此类操作。虽然不是很推荐直接在HAProxy服务器上实现https功能,但HAProxy在实现https的强制跳转方面比Nginx服务器更简洁,只需添加一条redirect scheme https if !{ ssl_fc },即请求报文中使用的协议不是https协议的就重定向为https协议。

使用HAProxy实现https_重定向_09

    此时客户端不用主动加https即可进行域名的跳转,将http协议重定向为https协议。如果是在浏览器中配合f12开发者工具访问,可以在“网络”-“标头”部分看到请求url为http://www.johnnyfang.com,并对访问的url进行了临时重定向,重定向后的位置为“location”部分的https://www.johnnyfang.com,在“发起程序”部分也能看到是有http协议往https协议进行重定向的。

使用HAProxy实现https_服务器_10

使用HAProxy实现https_服务器_11

使用HAProxy实现https_重定向_12

举报

相关推荐

0 条评论