通过haproxy redirect请求重定向的方法实现HTTP跳转HTTPS

配置实现http跳转到https,采用redirect重定向的做法,只需在frontend端添加:

frontend http-in
bind *:
bind *:443 ssl crt /etc/haproxy/aaa.bbb.pem
redirect scheme https if !{ ssl_fc }

redirect scheme https if !{ ssl_fc } 表示所有http站点都会跳转到https,如果只针对某一站点或某一URL进行跳转的话:

redirect scheme https if { hdr_beg(host) -i aaa.bbb.com } !{ ssl_fc }

redirect scheme https if { hdr_reg(host) -i ^[a-zA-Z0-9_]+.aaa.bbb.com } !{ ssl_fc }

当然了,也可以重定向也可以用在backend端:

frontend  main *:
default_backend app
backend app
balance roundrobin
server node1 127.0.0.1: check weight redir http://www.baidu.cn

将访问的站点重定向到www.baidu.com

参考链接:http://blief.blog.51cto.com/6170059/1752669

http://www.cnblogs.com/ilanni/p/4941056.html

---------------------------------------------------------------------------------

1、haproxy 本身提供ssl 证书,后面的web 服务器走正常的http

2、haproxy 本身只提供代理,后面的web服务器https

第一种方式(推荐)

需要编译haproxy 支持ssl,编译参数:

# yum install openssl-devel -y
# wget http://haproxy.1wt.eu/download/1.5/src/devel/haproxy-1.5-dev19.tar.gz
# tar -zxvf haproxy-1.5-dev19.tar.gz ; cd haproxy-1.5-dev19
# make TARGET=linux26 USE_OPENSSL=1 ADDLIB=-lz
# ldd haproxy | grep ssl
libssl.so. => /usr/lib64/libssl.so. (0x00007fb0485e5000)
# make install PREFIX=/usr/local/haproxy

haproxy.cfg 配置:

global
  maxconn 64000
  log 127.0.0.1 local0
  chroot /usr/share/haproxy
  uid 99
  gid 99
  daemon
  nbproc 4
  tune.ssl.default-dh-param 2048

defaults
  log global
  mode http
  option dontlognull
  retries 3
  option redispatch
  option httpclose
  balance roundrobin
  option forwardfor if-none

  maxconn 64000
  timeout connect 5000
  timeout client 50000
  timeout server 50000

frontend https_frontend
  bind *:443 ssl crt /etc/ssl/certs/servername.pem

   acl host_https_ihouse hdr_beg(host) -i ihouse.xxx.com
   use_backend yidongclient_server_https if host_https_ihouse

default_backend web_server

frontend http-in
  bind *:80
  log global
  option httplog
  option forwardfor

    acl host_manager_uhouse hdr_beg(host) -i manager.u.house.com
use_backend manager_uhouse_server if host_manager_uhouse

backend manager_uhouse_server
  balance source
  option httpchk HEAD /httpchk.jsp HTTP/1.1\r\nHost:\ manager.u.house.com
  server mannager_uhouse_48 10.0.10.48:8081 weight 1 check inter 5000 rise 2 fall 5
  server mannager_uhouse_49 10.0.10.49:8081 weight 1 check inter 5000 rise 2 fall 5

backend yidongclient_server_https

   balance roundrobin
cookie SERVERID insert indirect nocache
server s1 192.168.250.47:80 check cookie s1
server s2 192.168.250.49:80 check cookie s2
注意:这里的pem 文件是下面两个文件合并而成:
# cat servername.crt servername.key |tee servername.pem

按照如上规则如果多个站点就可以使用同样的规则 bind *:443  ssl  crt  $filepath  crt $file2path  crt $file3path

通过以上配置可以看出来,frontend与其相对应的backend可以分开,但是其各自acl规则是不同的,必须放在自己所属的区域下面。

第二种方式配置

不需要重新编译支持ssl,简单方便。需要后面的web服务器配置好ssl 即可。

frontend https_frontend
bind *:
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.250.47:
server s2 192.168.250.49: 注意,这种模式下mode 必须是tcp 模式,经测试 frontend 采用mode tcp时,只认可 default_backend 这一个后端,无法使用acl

haproxy.cfg示例文件:

global
maxconn
log 127.0.0.1 local0
uid
gid
daemon
defaults
log global
mode http
option dontlognull
retries
option redispatch
option httpclose
balance roundrobin
maxconn
timeout connect
timeout client
timeout server 50000
frontend yidonghttps-in
bind *:443
mode tcp
default_backend yidongclient_server_https
frontend http-in
bind *:
mode http
log global
option httplog
option forwardfor

acl host_manager_uhouse hdr_beg(host) -i manager.u.house.com
use_backend manager_uhouse_server if host_manager_uhouse
backend yidongclient_server_https
mode tcp
stick-table type ip size 200k expire 30m
stick on src
option ssl-hello-chk
option httpchk OPTIONS * HTTP/1.1\r\nHost:\ ihouse.ifeng.com
server yidonghttps_168 10.0.10.168:443
backend manager_uhouse_server
balance source
option httpchk HEAD /httpchk.jsp HTTP/1.1\r\nHost:\ manager.u.house.com
server mannager_uhouse_48 10.0.10.48: weight check inter rise fall
server mannager_uhouse_49 10.0.10.49: weight check inter rise fall

参考资料:https://www.trustasia.com/help/haproxy-ssl.htm

Haproxy ssl 配置方式的更多相关文章

  1. HAPROXY 配置项/配置实例

    HAPROXY 配置项/实例 常用配置选项: OPTION 选项: option httpclose :HAProxy会针对客户端的第一条请求的返回添加cookie并返回给客户端,客户端发送后续请求时 ...

  2. HAProxy 参数配置

    RabbitMQ集群部署完成,通过HAProxy反向代理来提供统一的对RabbitMQ的访问入口. 1.Haproxy提供高可用性.负载均衡,以及基于TCP和HTTP的应用程序代理.(负载均衡策略有很 ...

  3. HAProxy详解(二):HAProxy基础配置与应用实例

    一.HAProxy基础配置与应用实例: 1.快速安装HAProxy集群软件: HAProxy的官网: https://www.haproxy.org/#down下载HAProxy的源码包. 安装: [ ...

  4. Haproxy+ssl+nvm+forever

    1 nvm介绍 NVM(Node version manager)顾名思义,就是Node.js的版本管理软件,可以轻松的在Node.js各个版本间切换,项目源码在GitHub: #安装git客户端 [ ...

  5. HAproxy 基础配置

    基础配置详解 HAProxy 的配置文件haproxy.cfg由两大部分组成,分别是global和proxies部分 global:全局配置段 进程及安全配置相关的参数性能调整相关参数Debug参数 ...

  6. 负载均衡服务之HAProxy基础配置(一)

    前文我们聊了下haproxy的基础安装,以及怎样去代理后端主机的配置:当然没有很详细的去说配置文件中各指令的意思:有关haproxy的安装和代理后端server可以参考本人博客https://www. ...

  7. 负载均衡服务之HAProxy https配置、四层负载均衡以及访问控制

    前文我们聊了下haproxy的访问控制ACL的配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12817773.html:今天我们来聊一聊haproxy的h ...

  8. Haproxy安装配置及日志输出问题

    简介: 软件负载均衡一般通过两种方式来实现:基于操作系统的软负载实现和基于第三方应用的软负载实现.LVS就是基于Linux操作系统实现的一种软负载,HAProxy就是开源的并且基于第三应用实现的软负载 ...

  9. SSL 通信原理及Tomcat SSL 配置

    SSL 通信原理及Tomcat SSL 双向配置 目录1 参考资料 .................................................................. ...

随机推荐

  1. highchart 中数据千分位显示为空格而不是逗号的解决方案

    thousandsSep: String   一千的分隔符 在highcharts.js 中找到  thousandsSep位置,把"" 改为  ","

  2. python 树遍历

    使用python实现的树遍历,包括宽度优先和深度优先 ef dfs(): tree = { 'A': ['B', 'C'], 'B': ['D', 'E'], 'C': ['F', 'G'], 'D' ...

  3. Linux命令(22)find的使用

    在linux下面工作,有些命令能够大大提高效率. 比如说find命令,他哥俩可以算是必会的linux命令,几乎每天都要用到他们. find命令 find命令的一般形式 find命令的常用选项及实例 f ...

  4. sevice__属性介绍: android:exported

    http://blog.csdn.net/lhf0000/article/details/6576327 http://blog.csdn.net/berry666/article/details/2 ...

  5. Sql Server分割字符串函数

    -- Description: 分割字符串函数 -- SELECT * FROM dbo.Split('a,b,c,d,e,f,g',',') -- ========================= ...

  6. DIY的.net正则表达式工具

    基本包括了常用的正则表达式测试工作. 对应.net Framework 2.0版本 VB.NET编写 百度网盘下载:http://pan.baidu.com/s/1eQAHnlo 包含源码. 在下一个 ...

  7. oracle大表添加字段default经验分享

    当oracle单表数据量上亿时,对表进行alter table aa add column_1 varchar2(2) defalut 'Y';时,效率及安全性是必须考虑的因素. 本帖以2亿的数据表a ...

  8. ASP.NET程序中 抛出"Thread was being aborted. "异常(转)

    Thread was being aborted :中文意思 线程被终止 引用地址:http://support.microsoft.com/default.aspx/kb/312629/EN-US/ ...

  9. verilog断言(SVA:systemverlog assertion)语法 ---- 转载

    转载自:http://blog.sina.com.cn/s/blog_4c270c730101f6mw.html 作者:白栎旸     断言assertion被放在verilog设计中,方便在仿真时查 ...

  10. CString std::string相互转换

    CString->std::string 例子: CString strMfc=“test“; std::string strStl; strStl=strMfc.GetBuffer(0); s ...