Haproxy配置

SSL介绍

公钥私钥就好比箱子和钥匙,通信双方没人都有一个箱子和一把钥匙,自己的箱子只有自己的钥匙才能打开,而且箱子不能暴力拆开(公钥加密的内容不能暴力破解)

SSL通信简单介绍

角色:

  • 浏览器:浏览器公钥(箱子A) 浏览器私钥(钥匙A)
  • 服务器:服务器公钥(箱子B) 服务器私钥(钥匙B)

场景:

  1. 浏览器:发送Hello消息
  2. 服务器:返回服务器公钥(箱子B)
  3. 浏览器:服务器公钥如果是根证书认证的说明就是安全的(箱子B的标识是大家公认的无法仿造),然后浏览器使用服务器公钥加密自己的浏览器公钥后发送给服务器(用箱子B套住箱子A然后锁上送回去)
  4. 服务器:服务器私钥解码数据得到浏览器公钥(用钥匙B打开箱子B获取到箱子A)
  5. 后面服务器只要把要发送的数据使用浏览器公钥加密(把东西放入箱子A锁上发送),浏览器只要把要发送的数据使用服务器公钥加密(把东西放入箱子B锁上发送),那么发送的数据就只能被双方解密(只有浏览器有箱子A的钥匙,并且只有服务器有箱子B的钥匙),就算加密消息被截获也不会泄密(别人没有钥匙,没法暴力打开箱子)

Haproxy

环境搭建

### 宿主机:64位 Ubuntu 16.04 TLS
# apt install lxc
# lxc-create -n web -t download -- -d ubuntu -r xenial -a amd64
# apt install haproxy

在容器部署apache2服务

# lxc-attach -n web
# apt install apache2
# mkdir -p /var/www/html
# chown -R www-data:www-data /var/www/
# a2enmod ssl
# vim /etc/apache2/sites-enabled/50-web.conf

<IfModule mod_ssl.c>
<VirtualHost *:443>
        documentRoot  /var/www/html
        ServerName apache
        SSLEngine on
        SSLCertificateFile      /etc/ssl/certs/ssl-cert-snakeoil.pem
        SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
</VirtualHost>
</IfModule>

# systemctl restart apache2
# halt
### 克隆容器
# lxc-copy -B aufs -s -n web -N apache

Haproxy透传配置

# lxc-ls -f
NAME   STATE   AUTOSTART GROUPS IPV4       IPV6
apache RUNNING 0         -      10.0.3.197 -
web    STOPPED 0         -      -          -
# vim /etc/haproxy/haproxy.cfg
################## 配置文件说明如下 ##################

global
        log 127.0.0.1 local0 #日志输出配置,所有日志都记录在本机,通过local0输出
        log 127.0.0.1 local1 notice
        chroot /var/lib/haproxy
        maxconn 4096
        tune.bufsize 384000
        stats socket /var/run/haproxy.stat level admin mode 600
        user haproxy #所属用户
        group haproxy #所属用户组
        daemon #以后台形式运行haproxy

defaults
        log global
        option dontlognull
        option redispatch
        retries 3
        timeout client 50s
        timeout connect 10s
        timeout server 50s
        maxconn 4096

frontend https-front
    bind *:443
    option tcplog
    mode tcp # 透传
    default_backend web-back


backend web-back
    mode tcp
    balance roundrobin
    stick-table type ip size 200k expire 30m
    stick on src

    server apache 10.0.3.197:443

frontend http-front
    bind *:80
    option httplog
    mode http
    default_backend http-back


backend http-back
    mode http
    balance roundrobin
    stick-table type ip size 200k expire 30m
    stick on src

    server apache 10.0.3.197:80

######################################################
posted @ 2017-10-14 10:07  银魔术师  阅读(351)  评论(0编辑  收藏  举报