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


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

时间: 2024-08-30 16:43:49

HAProxy 之 实现https访问的相关文章

Apache配置SSL 实现https访问

本次坏境:CA和apache为同一台主机 先使本机作为CA服务端: [[email protected]~]#yum -y install openssl openssl-devel [[email protected]~]#vi /etc/pki/tls/openssl.cnf [ CA_default ] dir = ../../CA 改为: [ CA_default ] dir= /etc/pki/CA 为了减少不必要的重复操作,可以预先定义[ req_distinguished_name

centos7安装tengine强制使用HTTPS访问

操作系统:centos7.2 x64tengine:Tengine/2.2.0主机IP: 10.0.0.12 一.安装tengine 1.1 下载源码安装包 1.1.1 源码包pcre-8.40            用于支持正则表达式 [[email protected] ~]# cd /usr/local/src/ [[email protected] src]# wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-

Tomcat创建HTTPS访问,java访问https

一 https和ssL HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版.即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL. 它是一个URI scheme(抽象标识符体系),句法类同http:体系.用于安全的HTTP数据传输.https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层

新手玩阿里云ECS搭建CentOS5.8搭建svn服务器支持https访问方式

关于svn,之前我也不了解这是个什么东西,去年(大二)的时候,在学校接触过一个项目,当时就用到了这个,也都不是我配置的,都是别人给我整好了,我就写代码呗,写了就提交上去,当时也没有考虑过什么事svn,现在在公司实习了,时间很充裕,就想玩玩svn,也顺便把我准备做的毕业设计都传上去,阿里云给了我机会,新手注册,ECS免费半年,多好的事,虽然没有外网带宽,但是买1M的外网带宽也就20多块钱一个月吧!我还是可以接受的,好了不废话了,阿里云在这里就不废话了,反正感觉很高大上,在这里就简单聊聊svn吧!也

Windows下Nginx配置SSL实现Https访问(包含证书生成)

Vincent.李 Windows下Nginx配置SSL实现Https访问(包含证书生成) Windows下Nginx配置SSL实现Https访问(包含证书生成) 首先要说明为什么要实现https? HTTP全名超文本传输协议,客户端据此获取服务器上的超文本内容.超文本内容则以HTML为主,客户端拿到HTML内容后可根据规范进行解析呈现.因此,HTTP主要负责的是"内容的请求和获取".问题就出在这部分.行监控.劫持.阻挡等行为很容易导致网站泄密,一些关键参数比如登录密码开发者会在客户端

web服务之Apache实现的https访问

本文旨在实践httpd-2.4基于域名的虚拟主机配置,让指定用户访问站点状态信息,并为站点提供https服务. 知识储备 HTTPS协议 HTTPS协议就是"HTTP协议"和"SSL/TLS"协议的结合,HTTP over SSL"或"HTTP over TLS",对http协议的文本数据进行加密处理后,成为二进制形式传输. SSL会话简化过程 (1) 客户端发送可供选择的加密方式,并向服务器请求证书: (2) 服务器端发送证书以及选定

LAMP+haproxy+varnish实现网站访问的动静分离及静态资源缓存

实验目标:1.    LAMP节点提供用户动态请求访问,数据库单独有数据库节点提供:2.    LAMP动态网站有两台服务器,提供负载均衡:3.    静态网站服务器节点提供用户的静态资源请求访问:存在两台静态web服务器,其网站静态资源在静态服务器上存放:4.    用户的静态请求访问后缓存在varnish服务器上,实现访问加速5.    前端的haproxy提供反向代理功能,将用户的动态资源请求发送给后端LAMP节点,静态资源请求发往后端静态web服务器:6.    该架构考虑还不健全,如静

Apache环境修改.htaccess文件实现子目录强制HTTPS访问

如果要在Apache环境下实现子目录强制HTTPS地址访问,该怎么实现呢?在此文章中将与大家一起分享如何在Apache环境下修改.htaccess文件来实现子目录强制HTTPS地址访问. 1.根目录域名.甚至比较简单,在.htaccess文件中增加下面代码即可,请记得改成自己域名. RewriteEngine On RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://www.网站域名.com/$1 [R,L] 2.子目录实现强制跳转h

Nginx负载均衡实现https访问

整体流程:1.搭建tomcat项目集群(默认完成) 2.安装nginx需要的库 3.安装Nginx并修改配置文件 4.启动测试 1.1.1. 安装Nginx 1.1.1.1. 安装环境: 安装pcre库 yum -y install pcre-devel 安装zlib库 yum install -y zlib-devel 安装openssl库 yum install -y openssl openssl-devel   或者  编译安装 编译安装openssl: 1.上传openssl压缩包 按