wordpress 2个主题,网站优化外包公司,订阅号如何做微网站,单页主题 wordpress1、负载均衡 负载均衡#xff08;Load Balance#xff0c;简称 LB#xff09;是高并发、高可用系统必不可少的关键组件#xff0c;目标是 尽力将网络流量平均分发到多个服务器上#xff0c;以提高系统整体的响应速度和可用性。 负载均衡的主要作用如下#xff1a; 高并发…1、负载均衡 负载均衡Load Balance简称 LB是高并发、高可用系统必不可少的关键组件目标是 尽力将网络流量平均分发到多个服务器上以提高系统整体的响应速度和可用性。 负载均衡的主要作用如下 高并发负载均衡通过算法调整负载尽力均匀的分配应用集群中各节点的工作量以此提高应用集群的并发处理能力吞吐量。 伸缩性添加或减少服务器数量然后由负载均衡进行分发控制。这使得应用集群具备伸缩性。 高可用负载均衡器可以监控候选服务器当服务器不可用时自动跳过将请求分发给可用的服务器。这使得应用集群具备高可用的特性。 安全防护有些负载均衡软件或硬件提供了安全性功能如黑白名单处理、防火墙防 DDos 攻击等。 所谓的四到七层负载均衡就是在对后台的服务器进行负载均衡时 依据四层的信息或七层的信息来决 定怎么样转发流量。 四层的负载均衡就是通过发布三层的 IP 地址 VIP 然后加四层的端口号来决定哪些流量需要做负载均衡对需要处理的流量进行NAT 处理转发至后台服务器并记录下这个 TCP 或者 UDP 的流量是由哪台服务器处理的后续这个连接的所有流量都同样转发到同一台服务器处理。 七层的负载均衡就是在四层的基础上没有四层是绝对不可能有七层的再考虑应用层的特征比如同一个Web 服务器的负载均衡除了根据 VIP 加 80 端口辨别是否需要处理的流量还可根据七层的 URL、浏览器类别、语言来决定是否要进行负载均衡。 1. 分层位置 : 四层负载均衡在传输层及以下七层负载均衡在应用层及以下。 2. 性能 : 四层负载均衡架构无需解析报文消息内容在网络吞吐量与处理能力上较高 : 七层可支持解析应用层报文消息内容识别URL 、 Cookie 、 HTTP header 等信息。 3. 原理 : 四层负载均衡是基于 ipport; 七层是基于虚拟的 URL 或主机 IP 等。 4. 功能类比 : 四层负载均衡类似于路由器 ; 七层类似于代理服务器。 5. 安全性 : 四层负载均衡无法识别 DDoS 攻击 ; 七层可防御 SYN Cookie/Flood 攻击。 2、基本实验环境部署
haproxy介绍 haproxy是一款开源、高性能的负载均衡器和代理服务器专为TCP和HTTP应用而设计。它可以将客户端的请求分发到多台后端服务器从而提高应用的可用性和性能。HAProxy支持多种负载均衡算法和健康检查机制是构建高可用性系统的理想选择。
HAProxy的整体架构主要包括以下部分
前端Frontend接受客户端请求并根据配置的规则进行处理。 后端Backend定义一组服务器处理前端转发的请求。 服务器Server实际处理请求的后端服务器。 监听器Listener在前端监听特定的IP和端口等待客户端的连接请求。
haproxy的组件:
配置文件haproxy.HAProxy的核心配置文件定义了前端、后端和监听器等组件。 统计报告Statistics ReportHAProxy提供丰富的统计信息便于监控和调试。 日志LogHAProxy支持详细的日志记录帮助分析和诊断问题。
haproxy的工作流程
客户端发送请求到HAProxy的前端。 前端根据配置的规则选择合适的后端。 后端将请求分发到具体的服务器进行处理。 服务器处理请求并返回结果通过后端和前端返回给客户端。
详细配置
①主机haproxy
添加ip地址
[rootapache hh]# vmset.sh ens160 172.25.254.100 haproxy.zf.org
②主机webserver1
添加ip地址
[rootapache hh]# vmset.sh ens160 172.25.254.10 webserver1.zf.org③主机webserver2
[rootapache hh]# vmset.sh ens160 172.25.254.20 webserver2.zf.org在2个webserver上安装nginx
[rootwebserver1 ~]# dnf install nginx -y
[rootwebserver2 ~]# dnf install nginx -y
在2个webserver上将字符串“echo webserver1 - 172.25.254.10 ”的内容输出并重定向到“/usr/share/nginx/html/index.html”并重启nginx服务
[rootwebserver1 ~]# echo webserver1 - 172.25.254.10 /usr/share/nginx/html/index.html
[rootwebserver1 ~]# systemctl enable --now nginx
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service.[rootwebserver2 ~]# echo webserver2 - 172.25.254.20 /usr/share/nginx/html/index.html
[rootwebserver2 ~]# systemctl enable --now nginx
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service.
环境检测
3、haproxy基本部署
相关参数
Proxies-frontend:bind [address]:port_range[,.][param*] 。
指定 haproxy 的监听地址可以是 IPv4 或 IPv6能同时监听多个 IP 或端口可在 listen 字段中使用.同时指出如果要绑定非本机的 IP需要开启内核参数 net.ipv4.ip_non1ocal_bind1 。
Proxies-backend:
mode httpltcp #指定负载协议类型和对应的frontend必须一致
option #配置选项
server g.com #定义后端real server必须指定IP和端口
定义一组后端服务器backend 服务器将被 frontend 进行调用。 注意backend 的名称必须唯一并且必须在 listen 或 frontend 中事先定义才可以使用否则服务无法启动.
①主机haproxy
安装haproxy软件
[roothaproxy ~]# dnf install haproxy -y 方法1使用frontend和backend2个参数配置proxies 定义了一个名为“webcluster”的前端绑定到 *:80 端口采用 HTTP 模式通过轮询的方式将请求分发到后端的 web1172.25.254.10:80和 web2172.25.254.20:80服务器.
[roothaproxy ~]# vim /etc/haproxy/haproxy.cfg
[roothaproxy ~]# systemctl restart haproxy.service 本机检测 后端检测
[rootwebserver1 ~]# systemctl stop nginx.service 方法2使用 listen 替换 frontend 和 backend 的配置方式可以简化设置通常只用于 TCP 协议的应用 。 监听所有的80 端口采用 HTTP 模式。使用轮询的负载均衡策略后端包含 web1172.25.254.10:80和 web2172.25.254.20:80这两个服务器当用户发起请求访问时haproxy 会按照轮询的方式将请求依次分配到 web1 和 web2 服务器上进行处理以实现负载均衡和提高系统的处理能力。
[roothaproxy ~]# vim /etc/haproxy/haproxy.cfg
[roothaproxy ~]# systemctl restart haproxy.service 本机检测 方法1和方法2测试结果一致 4、haproxy的全局配置
[roothaproxy ~]# vim /etc/haproxy/haproxy.cfg
[roothaproxy ~]# systemctl restart haproxy.service
在系统进程树的显示结果中查找与“haproxy”相关的进程信息为单进程
[roothaproxy ~]# pstree -p | grep haproxy 设定多线进程 再次在系统进程树的显示结果中查找与“haproxy”相关的进程信息 设定第一个进程使用第一个核心第二个进程使用第二个核心 查看33142的进程信息
[roothaproxy ~]# cat /proc/33142/status | grep -i thread 注意多线程和多进程的参数是互斥的 定向haproxy的日志
配置文件定义日志 local2 修改日志文件打开UDP端口
[roothaproxy ~]# vim /etc/rsyslog.conf 5、haproxy的代理配置
proxies-defaults默认参数设置详解
mode http表明工作模式为 HTTP 模式。
log global意味着日志记录采用全局设置。
option httplog启用了与 HTTP 日志相关的特定选项。
option dontlognull可能表示不记录某些空值相关的内容。
option http-server-close与 HTTP 服务器关闭的相关设置。
option forwardfor except 127.0.0.0/8在进行 Forwarded-For 处理时排除了 127.0.0.0/8 这个网段。
retries 3表示重试次数为 3 次。
timeout http-request 10sHTTP 请求的超时时间为 10 秒。
timeout queue 1m队列的超时时间为 1 分钟。
timeout connect 10s连接的超时时间为 10 秒。
timeout client 1m客户端的超时时间为 1 分钟。
timeout server 1m服务器的超时时间为 1 分钟。
timeout http-keep-alive 10sHTTP 保持活动连接的超时时间为 10 秒。
timeout check 10s检查的超时时间为 10 秒。
maxconn 3000最大连接数为 3000 个。
proxies-frontend
bind [address]:port_range[,...][param*]
server配置参数 ①利用check、inter、fall、rise、weight进行后端健康检测
[roothaproxy ~]# vim /etc/haproxy/haproxy.cfgserver web1 172.25.254.10:80 check inter 2 fall 3 rise 5 weight 2服务器 web1 的地址为 172.25.254.10:80检查间隔为 2故障阈值为 3恢复阈值为 5权重为 2server web2 172.25.254.20:80 check inter 2 fall 3 rise 5 weight 1服务器 web2 的地址为 172.25.254.20:80检查间隔、故障阈值、恢复阈值与 web1 相同但其权重为 1。
②利用 backup实现Sorry server服务
断开2台server的nginx服务使主机down机
systemctl stop nginx.service
本机检测和浏览器访问服务不可达 此时利用 backup参数开启sorry-server
在haproxy主机上安装httpd软件模拟sorry server主机并修改其端口号为8080
[roothaproxy ~]# dnf install httpd -y
[roothaproxy ~]# vim /etc/httpd/conf/httpd.conf
[roothaproxy ~]# systemctl enable --now httpd [roothaproxy ~]# echo sorry 下班了,明天见 /var/www/html/index.html
#向特定的网页文件写入指定的文本内容
浏览器测试sorry-server可用 编辑haproxy配置文件 本机测试 重启一个server2再次测试server2可用 ③利用disable参数下线指定realserver 禁用server1
本机测试 ④利用redirect参数重定向指定网站 www.baidu.com 浏览器测试 ⑤利用maxconn设定最大连接数
服务器的最大连接数设置为 2 server测试 maxconn优化 6、haproxy的热更新方法
①利用mode调整scoket的参数设置使其拥有管理员权限 ②利用socat工具动态调整haproxy中的参数-----针对单进程
[roothaproxy ~]# dnf install socat -y
[roothaproxy ~]# echo help | socat stdio /var/lib/haproxy/stats #查看帮助命令 [roothaproxy ~]# echo show info | socat stdio /var/lib/haproxy/stats
#查看haproxy的状态 [roothaproxy ~]# echo show servers state | socat stdio /var/lib/haproxy/stats
#查看server状态 #查看server1的权重
[roothaproxy ~]# echo get weight webcluster/web1 | socat stdio /var/lib/haproxy/stats
2 (initial 2)#修改server1的权重
[roothaproxy ~]# echo set weight webcluster/web1 1 | socat stdio /var/lib/haproxy/stats
[roothaproxy ~]# echo get weight webcluster/web1 | socat stdio /var/lib/haproxy/stats
1 (initial 2) 测试 #下线某台主机
[roothaproxy ~]# echo disable server webcluster/web1 | socat stdio /var/lib/haproxy/stats测试 #重启某台主机
[roothaproxy ~]# echo enable server webcluster/web1 | socat stdio /var/lib/haproxy/stats
测试 ③haproxy多进程如何热处理 查看多进程文件
测试 7、haproxy的算法 静态算法
1、Static-RR静态轮询
与轮询类似但可以为服务器设置权重。权重高的服务器会获得更多的请求分配机会。 比如S1 权重为 2S2 权重为 1S3 权重为 1那么每 4 个请求中S1 会分配到 2 个S2 和 S3 各分配到 1 个。测试结果关闭多进程并测试注意Static-RR不支持局部修改权重
2、First
总是将第一个可用的服务器用于处理请求。 例如如果有三个服务器 S1、S2、S3第一次请求会分配给 S1后续的请求也一直分配给 S1除非 S1 不可用才会考虑 S2 和 S3 。 这种算法适用于某些特殊情况比如已知某个服务器性能特别优越希望优先使用它。在多台主机中执行死循环测试结果
动态算法
1、Round Robin轮询
以循环的方式依次将请求分配到后端的服务器。例如有服务器 S1、S2、S3第一个请求分配给 S1第二个给 S2第三个给 S3然后再从 S1 开始循环。 这种算法简单直观适用于后端服务器性能相当且无需考虑请求特征的情况。 动态修改权重
2、Least Connections最少连接
新的请求会被分配到当前活动连接数最少的服务器。例如有服务器 S1 有 10 个活动连接S2 有 5 个活动连接S3 有 8 个活动连接那么新请求会分配给 S2。 测试结果
其他算法
其他算法既可作为静态算法又可作为动态算法。
1、Source Hash 算法
根据客户端的源 IP 地址计算哈希值然后基于该哈希值将请求始终分配到同一台后端服务器。 例如假设有三个后端服务器 S1、S2 和 S3客户端 A 的 IP 地址经过哈希计算后对应到 S1那么只要客户端 A 发送请求都会被分配到 S1 处理。 这种算法的优点在于 对于需要保持会话一致性的应用非常有用。比如用户登录后的一系列操作都能在同一台服务器上处理避免了会话数据在不同服务器之间传递导致的问题。 可以减少服务器之间的状态同步开销。 但它也有一定的局限性 如果某一客户端的流量过大可能会导致对应服务器负载过高。 当后端服务器数量发生变化时可能会导致哈希结果的重新分布影响负载均衡的效果。测试结果
2、map-base 取模法
对 source 地址进行 hash 计算再基于服务器总权重取模决定请求转发的后端服务器。 此方法是静态的不支持在线调整权重和慢启动可实现后端服务器均衡调度。 缺点是服务器总权重变化有服务器上线或下线会导致调度结果整体改变hash-type 指定的默认值为此算法。
3、一致性哈希
当服务器总权重变化时对调度结果的影响是局部的不会引起大的变动。该 hash 算法是动态的支持使用 socat 等工具进行在线权重调整支持慢启动。修改后支持局部修改权重 [rootwebserver1 ~]# echo 172.25.254.10 -index.html /usr/share/nginx/html/index1.html
[rootwebserver2 ~]# echo 172.25.254.20 -index.html /usr/share/nginx/html/index1.html
uri一致性hash基于对用户请求的URI的左半部分或整个uri做hash再将hash结果对总权重进行取模后根据最终结果将请求转发到后端指定服务器 适用于后端是缓存服务器场景。默认是静态算法也可以通过hash-type指定map-based和consistent来定义使用取模法还是一致性hash。 url-paramurl_param对用户请求的url中的 params 部分中的一个参数key对应的value值作hash计算并由服务器总权重相除以后派发至某挑出的服务器,后端搜索同一个数据会被调度到同一个服务器多用与电商通常用于追踪用户以确保来自同一个用户的请求始终发往同一个real server 。如果无没key将按roundrobin算法。 测试结果
hdr针对用户每个http头部(header)请求中的指定信息做hash此处由 name 指定的http首部将会被取出并做hash计算然后由服务器总权重取模以后派发至某挑出的服务器如果无有效值则会使用默认的轮询调度。
使用curl -v 查看报文 测试指定浏览器访问在微软浏览器测试
算法总结
static-rr---------tcp/http 静态
first-------------tcp/http 静态
roundrobin--------tcp/http 动态
leastconn---------tcp/http 动态
random------------tcp/http 动态
source------------tcp/http
Uri---------------http
url_param---------http 取决于hash_type是否consistent
hdr---------------http
rdp-cookie--------tcp
first #使用较少
static-rr #做了session共享的web集群
roundrobin
random
leastconn #数据库
source #基于客户端公网IP的会话保持
Uri---------------http #缓存服务器CDN服务商蓝汛、百度、阿里云、腾讯
url_param---------http
hdr #基于客户端请求报文头部做下一步处理
rdp-cookie #很少使用
8、haproxy的状态页
配置详情
设置监听端口为9999每隔3秒刷新状态页使用用户名zf,密码zf登陆该状态页。 浏览器测试 9、haproxy的高级功能及配置
1、基于cookie的会话保持 cookie value 为当前 server 指定 cookie 值实现基于 cookie 的会话黏性相对于基于 source 地址 hash 调度算法对客户端的粒度更精准但同时也加大了haproxy 负载目前此模式使用较少已经被 session共享服务器代替。 cookie配置详情 命令行测试 2、IP透传 web 服务器中需要记录客户端的真实 IP 地址用于做访问统计、安全防护、行为分析、区域排行等场景。 2.1七 层 IP透传 ①还原实验环境 利用option forwardfor 参数 ②在server1上做apache服务器 #apache 配置 LogFormat %{X-Forwarded-For}i %a %l %u %t \%r\ %s %b \%{Referer}i\ \% {User-Agent}i\ combined #nginx 日志格式 $proxy_add_x_forwarded_for 包括客户端 IP 和中间经过的所有代理的 IP $http_x_forwarded_For 只有客户端 IP log_format main $proxy_add_x_forwarded_for - $remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_For; [rootwebserver1 ~]# systemctl disable nginx
Removed /etc/systemd/system/multi-user.target.wants/nginx.service.
[rootwebserver1 ~]# systemctl stop nginx.service
[rootwebserver1 ~]# dnf install httpd -y编辑server1-日志文件的主配置文件
[rootwebserver1 ~]# vim /etc/httpd/conf/httpd.conf
[rootwebserver1 ~]# systemctl restart httpd
[rootwebserver1 ~]# cat /etc/httpd/logs/access_log
172.25.254.100 - - [10/Aug/2024:14:11:50 0800] GET / HTTP/1.1 200 27 - curl/7.76.1命令行测试 2.2 四层IP透传
[roothaproxy ~]# vim /etc/haproxy/haproxy.cfg
[roothaproxy ~]# systemctl restart haproxy.service利用send-porxy 做代理 测试后发现不通畅 编辑server2的配置文件
[rootwebserver2 ~]# vim /etc/nginx/nginx.conf
[rootwebserver2 ~]# systemctl restart nginx.service测试 安装帮助手册
[rootwebserver1 ~]# dnf install httpd -y
[rootwebserver1 ~]# systemctl restart httpd测试 [rootwebserver1 ~]# tail /etc/httpd/logs/access_log
172.25.254.100 172.25.254.100 - - [10/Aug/2024:15:14:56 0800] GET / HTTP/1.1 200 27 - curl/7.76.110、haproxy的访问控制列表ACL ACL相关参数示例
#用acl来定义或声明一个acl
acl aclname criterion [flags] [operator] [value]
acl 名称 匹配规范 匹配模式 具体操作符 操作对象类型 hdr_dom[name [occ]]域匹配header中的domhost,hdr_dom(host) 请求的host名称
命令行测试 hdr_end[name [occ]]后缀匹配header中指定匹配内容end,hdr_end(host) 请求的host结尾
编辑C:\Windows\System32\drivers\etc的内容 测试结果 hdr_beg[name [occ]]前缀匹配header中指定匹配内容的beginhdr_beg(host) 请求的host开头 访问测试 base : string # 返回第一个主机头和请求的路径部分的连接该请求从主机名开始并在问号之前结束 , 对虚拟主机有用 scheme://user:password#host:port/path;params#?query#frag 下面使用base_sub : 字符串匹配做示例 测试 [rootwebserver1 ~]# mkdir /var/www/html/zf -p
[rootwebserver1 ~]# echo 172.25.254.10 zf /var/www/html/zf/index.html
[rootwebserver1 ~]# curl 172.25.254.10/zf/index.html
172.25.254.10 zfbase_reg : 正则表达式匹配 测试 path : string # 提取请求的 URL 路径该路径从第一个斜杠开始并在问号之前结束无主机部分 scheme://user:passwordhost:port#/path;params#?query#frag path_sub : substring match 测试 ACL-value 操作对象 - Boolean #布尔值
- integer or integer range #整数或整数范围比如用于匹配端口范围
- IP address / network #IP地址或IP范围, 192.168.0.1 ,192.168.0.1/24
- string-- www.timinglee.org
exact #精确比较
substring #子串
suffix #后缀比较
prefix #前缀比较
subdir #路径 /wp-includes/js/jquery/jquery.js
domain #域名www.timinglee.org
- regular expression #正则表达式
- hex block #16进制 [rootwebserver2 ~]# mkdir -p /usr/share/nginx/html/zf
[rootwebserver2 ~]# echo 172.25.254.20 zf /usr/share/nginx/html/zf/index.html测试 多个ACL的逻辑处理 与隐式默认使用
或使用“or 或 “||表示
否定使用 ! 表示 ACL相关应用示例
基于域名的访问 测试结果 基于源IP的访问 测试 拒绝访问 测试 匹配浏览器类型 测试 基于后缀名实现动静分离
[rootwebserver1 ~]# dnf install php -y
[rootwebserver1 ~]# systemctl restart httpd
[rootwebserver1 ~]# vim /var/www/html/index.php
[rootwebserver1 ~]# cat /var/www/html/index.php
?phpphpinfo();
?网页测试 编辑主配置文件 测试 基于访问路径实现动静分离
[rootwebserver2 ~]# mkdir /usr/share/nginx/html/static -p
[rootwebserver2 ~]# echo static - 172.25.254.20 /usr/share/nginx/html/static/index.html
[rootwebserver2 ~]# curl 172.25.254.20/static/
static - 172.25.254.20[rootwebserver1 ~]# mkdir -p /var/www/html/php
[rootwebserver1 ~]# cp /var/www/html/index.php /var/www/html/php/测试 测试 11、自定义haproxy错误界面
基于自定义的错误页面
关闭server的服务访问172.25.254.100 [roothaproxy ~]# mkdir /etc/haproxy/errorpage -p
[roothaproxy ~]# vim /etc/haproxy/errorpage/503.http[roothaproxy ~]# vim /etc/haproxy/haproxy.cfg
[roothaproxy ~]# systemctl restart haproxy.service网页测试 基于http重定向错误页面
[roothaproxy ~]# vim /etc/haproxy/haproxy.cfg
[roothaproxy ~]# systemctl restart haproxy.service网页测试 12、haproxy的四层负载利用MySQL实现
[roothaproxy ~]# dnf install mariadb -y #模拟客户端
[rootwebserver1 ~]# dnf install mariadb-server -y #模拟服务端
[rootwebserver2 ~]# dnf install mariadb-server -y #模拟服务端
[rootwebserver1 ~]# vim /etc/my.cnf.d/mariadb-server.cnf
[rootwebserver1 ~]# systemctl start mariadb[rootwebserver2 ~]# vim /etc/my.cnf.d/mariadb-server.cnf
[rootwebserver2 ~]# systemctl start mariadb
修改server-id利于实验效果的呈现 登录MySQL查看id #在server1上添加可远程登录的用户
MariaDB [(none)] CREATE USER zf% identified by zf;
Query OK, 0 rows affected (0.002 sec)
MariaDB [(none)] GRANT ALL ON *.* TO zf%;
Query OK, 0 rows affected (0.001 sec)#在server2上添加可远程登录的用户
MariaDB [(none)] CREATE USER zf% identified by zf;
Query OK, 0 rows affected (0.002 sec)
MariaDB [(none)] GRANT ALL ON *.* TO zf%;
Query OK, 0 rows affected (0.001 sec)#测试
[roothaproxy ~]# mysql -uzf -p -h 172.25.254.10
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 5
Server version: 10.5.16-MariaDB MariaDB ServerCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type help; or \h for help. Type \c to clear the current input statement.MariaDB [(none)] quit
Bye
使用haproxy实现负载
[roothaproxy ~]# vim /etc/haproxy/haproxy.cfg
[roothaproxy ~]# systemctl restart haproxy.service测试 13、haproxy的https实现
[roothaproxy ~]# openssl req -newkey rsa:2048 -nodes -sha256 -keyout /etc/haproxy/certs/zf.org.key -x509 -days 365 -out /etc/haproxy/certs/zf.org.crt #查看证书
[roothaproxy ~]# ls /etc/haproxy/certs/
zf.org.crt zf.org.key#重定向到/etc/haproxy/certs/zf.pem下
[roothaproxy ~]# cat /etc/haproxy/certs/zf.org.key /etc/haproxy/certs/zf.org.crt /etc/haproxy/certs/zf.pem
[roothaproxy ~]# cat /etc/haproxy/certs/zf.pem
-----BEGIN PRIVATE KEY-----
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDP6x8izC/lhiLU
Rf4XJGGmVV/IT5ABPqibNsBkHmv92Nfd6Z/MUva6FFs23IjONO3ecK94YLeUgkw
V7SU99/1QbXvIGuZINQbWO/XGH9CKSALlOmxV/q/eBpz4L9uVv6Fnd1ABYHeBt
WJnmPZDD4ZdPgUgVcTSPsY7ohFTAmh/pXQEMaYgHUr2JD4kBRTcJpY8e1lzMGsy
caGXQXk4SNg1Rl7mPzSQbvxSXPTgsgPqkiwXJe2EptUO1S5oKBWgHmFP/rhThjk2
xjQEB0ZavnZaAIXkk4AWE06TMahbwRsfDS/r4ofkC7br5RLyg00890H6tNA8Qp6
Z08k3xMVAgMBAAECggEABe0EBk4DOSuZYs2u8geYhQ9H57WCSeeKk0ud/5Q1MSa
Y5Kc4XfKJdYeZ2jh9wIDd0SHNRYgmbry1GHAHbCEmR9NCbgihHDoE30s8C9vJ4Uz
954jijVqwbdjgUmqWs0uo3td3s0WhyXK145pDH0AbWTIu6eA6SgcHGTk/PRk7Q6
e2Q8zxVZOeoMYOEPtYZgRobUjVw9ZdkotTr4mbMo5BGL10oxGV7ErbsTZMYoqm
U3HV//d7BQ44KkdaAeXSpkB1eKhrIKBccrKj7mpggQ8IrG5o1eSCXU78dQvxMzF
LHf4bWSbWQvVLSptVtnKBJNt5ccrOdbAul2dqBZAQKBgQDRTQOcE8yQCNn2nug
XpOSxn36SYNYNNqHrDER/b74E9TErjr9ramcW6gW/xcQzl0KqEdtDIi1xg2hOhZZ
pTdfv9ZkGVKLtXsRjd38BTdmLdM7XXQ1lx8v2WisKNgI9rCQohYrxK6l/KAhbGj
XrPR3uHsWWQon9rvUzxiC6N1QKBgQDTyWoasxE56THIW3FrsTEbsn10Q6Pe6Yd
BIp5BQEtZBQh/HUMTBMPZwIlH/vHeEFPv58ZCmUFC0v2kP7Qdnel1dDS7AwaQ
KpNgV49rov9B9Fqc0uPmFQ0bznm5a5ExCwTK7FRKaX0Clvt0PjpiWmgZ8DkK1U
QubrHpDQQQKBgQCox7MefLTcfdbVdnh1JW9Z0Cks2XVKfyyudcQIXxhN0ygkBuBZ
S17YUO1mxgRisBdFjdgzbwUbmH/LQR1e4yWZWAjaJbV0Jj/9MusM3WQESPXrDHy2
7oveuTJ4imNULyLJL3wzhWLVRbgX2V7IwFdP5/uSVPWUpHwXvIaYBgylQKBgQCS
aTjSDKKL7R1F84CCMuKGAq4NmLon6RaELcx8/UtTCOHI26xbWXgYOPoiJ99SLP
UHipfrT7u3wxko2q2W42Ourkz0FohaZqq8hriB2vJ4l0DF16ukOw/FuqaVje9V
8ec6JkaQ5rx/ktNCA3rXfplgknHdGJdh0p6lsNRIwQKBgQDJCj9wDcW12sS5Ul/m
8c0zxDVBvmhmVB4sE2lh6OkIufC9xpO8MvPfvgtXzoDn0C48zct53m8Nj7bvvQ
Yhy7PPSh1du1mQmLxodbENEpIt0UgABHuDi1SzhM6N4MGdGpd9PnSb/VvNgbox2C
8OQKm8QKHiXIVF1gndkfC2gcqQ
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIID7TCCAtWgAwIBAgIUZ7AYtUUbXy1gNTj8y1PBy8avbKEwDQYJKoZIhvcNAQEL
BQAwgYUxCzAJBgNVBAYTAkNOMRIwEAYDVQQIDAlDaG9uZ3FpbmcxDzANBgNVBAcM
Bld1c2hhbjELMAkGA1UECgwCemYxEjAQBgNVBAsMCXdlYnNlcnZlcjETMBEGA1UE
AwwKd3d3LnpmLm9yZzEbMBkGCSqGSIb3DQEJARYMYWRtaW5AemYub3JnMB4XDTI0
MDgxMTA0NTExM1oXDTI1MDgxMTA0NTExM1owgYUxCzAJBgNVBAYTAkNOMRIwEAYD
VQQIDAlDaG9uZ3FpbmcxDzANBgNVBAcMBld1c2hhbjELMAkGA1UECgwCemYxEjAQ
BgNVBAsMCXdlYnNlcnZlcjETMBEGA1UEAwwKd3d3LnpmLm9yZzEbMBkGCSqGSIb3
DQEJARYMYWRtaW5AemYub3JnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAzsfIswv5YYi1EXFyRhplVfyEQAT6omzbAZB5r/djX3emfzFL2uhRbNtyI
zjTt3nCvfuGC3lIJMFe0lPff9UG17yBvrmSDUG1jv1xh/QikgC5TpsVf6v3gacC
/blbhZ3dQAfmB3gbViZ5j2QwGXT4FIFXE0j7GO6IRUwJof6V0BDGmIB1K9iQP
pAUU3CaWPHtZczBrMnGhl0F5OEjYNUZe5j80kG78Ulz04LID6pIsFyXthKbVDtUu
aCgVoB5hT/64U4Y5Nsfo0BAdGWr52WgCF5JOAFhNOkzGoW8EbHw0v6KH5Au26U
S8oNNPPdBrTQPEKemdPJN8TFQIDAQABo1MwUTAdBgNVHQ4EFgQUwmQsD5Tmz4EB
vglvFu31w3iyCSwwHwYDVR0jBBgwFoAUwmQsD5Tmz4EBvglvFu31w3iyCSwwDwYD
VR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAH73/InMrHEl7yEjxTEAC
I7BA7ZKI5p5G1hmvhnh1xR5osW44C/hrBk29wZ2G1bWsOOHNiOenLyhym6V9EA7r
iy423szXc1rqz0KINcRAa5b7El8id3tpNXjpybUlQYrxblM2ErEb1nHD1a6Xac
rDnWWiJzyEdHV7rkzh3rKUyN2g3/OBB7Rw8qDgmfFiFjhrXs1tZ3fsklWfYxcKf
KvT/tByeVnTZWJBdjiNJXbeWVy1gukU3MgklaOeyzAdv7RZ4YOnxUfjfqVMthql
K1v1VFdfSotKfEDpcCARUWlx7KXVaH0vrae2rY9714c/J7zA8rYBABk/kCu2
yQ
-----END CERTIFICATE----- 测试 使用redirect scheme https if !{ ssl_fc } 实现全站加密