记得在之前的一篇文章中介绍了nginx反向代理https的方法,今天这里介绍下haproxy代理https的方法:
haproxy代理https有两种方式:
1)haproxy服务器本身提供ssl证书,后面的web服务器走正常的http
2)haproxy服务器本身只提供代理,后面的web服务器走https(配置ssl证书)
第一种方式:haproxy服务器本身提供ssl证书
注意:
需要编译haproxy的时候支持ssl
编译参数:
#make TARGET=linux26 USE_OPENSSL=1 ADDLIB=-lz
#ldd haproxy | grep ssl
libssl.so.10 => /usr/lib64/libssl.so.10 (0x00007fb0485e5000)
配置参数(修改haproxy.cfg文件)
frontend https_frontend
bind *:443 ssl crt /etc/ssl/certs/servername.pem
mode http
option httpclose
option forwardfor
reqadd X-Forwarded-Proto:\ https
default_backend web_server
backend web_server
mode http
balance roundrobin
cookie SERVERID insert indirect nocache
server s1 192.168.1.150:80 check cookie s1
server s2 192.168.1.151:80 check cookie s2
-----------------------------------------------------------
注意:这里的pem 文件是下面两个文件合并而成:
#cat servername.crt servername.key |tee servername.pem
-----------------------------------------------------------
第二种方式:haproxy服务器本身只提供代理,没有ssl证书 (一般我们常用的就是这种方式)
这种方式,haproxy不需要重新编译支持ssl,简单方便,只需要后面的web服务器配置好ssl即可。
配置参数(修改haproxy.cfg文件)
frontend https_frontend
bind *:443
mode tcp
default_backend web_server
backend web_server
mode tcp
balance roundrobin
stick-table type ip size 200k expire 30m
stick on src
server s1 192.168.1.150:443
server s2 192.168.1.151:443
---------------------------------------------------------
注意,这种模式下mode 必须是tcp 模式
---------------------------------------------------------