通过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. 真机测试-Please enter a different string错误解决

    错误原因是这个bundle ID已经被占用了,这是想到的是要重置测试证书,那么则需要去修改Bundle identifier,因为测试证书是以Bundle identifier为基准的,修改后运行,重 ...

  2. Spring 事务注解 错误问题

    碰到个问题,在一个springmvc项目中,设置好事务,然后在service上添加@Transactional注解,只要一添加这个注解,该service就无法被spring创建成功, error cr ...

  3. Maven私有仓库搭建和使用

    下载和安装 下载地址: http://www.sonatype.com/nexus-repository-oss 安装: Linux版的无需安装,直接解压即可,然后进入bin目录下,运行./nexus ...

  4. NET中的Memcached.ClientLibrary使用详解

    memcached在windows下的下载与安装 下载地址:http://pan.baidu.com/s/1yVILw       提取密码:5gx9 官方网站:http://memcached.or ...

  5. Spark性能测试报告与调优参数

    1.代码中尽量避免group by函数,如果需要数据聚合,group形式的为rdd.map(x=>(x.chatAt(0),x)).groupbyKey().mapValues((x=>x ...

  6. mint安装相关数据库lib

    sudo apt-get install libmysqlclient-dev sudo apt-get install sqlite3 libsqlite3-dev

  7. iPad 控件UIPopoverController使用

    UIPopoverController 是iPad特有控件,(iOS7-9),在iOS9之后别废弃 使用步骤 设置内容控制器 UIPopoverController直接继承NSObject,不具备可视 ...

  8. C#小程序呢飞行棋设计分析

    C#小程序飞行棋,程序效果图 1.设计分析 这个程序界面大致分为四部分: ① 最上面游戏名字界面 ②信息提示区 ③游戏界面区 ④游戏操作提示区 2.分区设计实现 一.游戏界面显示区,由于只需要显示出图 ...

  9. 仿Spring读取配置文件实现方案

    一.读取config和jar里的配置文件,以流的方式返回 /** * 根据路径,获取当前项目中路径(jar包和config文件)下的配置文件 * @param filePath 存放job配置信息文件 ...

  10. confirm perspective switch 初始化

    更新代码与资源库同步时   也是这么设置