<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Cdn on 丸子有记, 记录生活、分享技术，专注于运维架构、运维开发(devops)。</title>
    <link>https://wanzi.dev/zh-cn/tags/cdn/</link>
    <description>Recent content in Cdn on 丸子有记, 记录生活、分享技术，专注于运维架构、运维开发(devops)。</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>zh-cn</language>
    <managingEditor>wzdushu@gmail.com (wanzi)</managingEditor>
    <webMaster>wzdushu@gmail.com (wanzi)</webMaster>
    <copyright>丸子有记</copyright>
    <lastBuildDate>Sun, 16 Jun 2024 16:22:42 +0800</lastBuildDate>
    
        <atom:link href="https://wanzi.dev/zh-cn/tags/cdn/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>开源Waf安全防护解决方案</title>
      <link>https://wanzi.dev/zh-cn/post/tools-safeline-waf/</link>
      <pubDate>Sun, 16 Jun 2024 16:22:42 +0800</pubDate>
      <author>wzdushu@gmail.com (wanzi)</author>
      <guid>https://wanzi.dev/zh-cn/post/tools-safeline-waf/</guid>
      
        <description>&lt;p&gt;最近网站加了CDN后，凌晨总是莫名其妙来一堆垃圾请求，有些是扫描、有些是大模型的UserAgent、有些是黑蜘蛛。&lt;/p&gt;
&lt;p&gt;为了节省CDN费用，同时防止各种注入攻击，所以开始调研开源的Waf方案(自己的小破站够用就行)，如果是企业使用，还是建议使用商业版本，比如阿里云的DCDN、腾讯的EdgeOne或者海外的Cloudflare(海外业务首选)。&lt;/p&gt;
&lt;h2 id=&#34;1功能介绍&#34;&gt;1、功能介绍&lt;/h2&gt;
&lt;p&gt;雷池（SafeLine）是长亭科技开源一个Waf解决方案，核心检测能力由智能语义分析算法驱动。&lt;/p&gt;
&lt;p&gt;主要功能为网络安全网关，侧重于Waf，可以防御所有的 Web 攻击，例如 sql注入、代码注入、os命令注入、CRLF注入、ldap注入、xpath注入、rce、xss、xxe、ssrf、路径遍历、后门、暴力破解、http 洪水、机器人滥用等等。&lt;/p&gt;
&lt;p&gt;大概看了下项目源码，API采用golang，核心waf功能采用tengine+Lua，类似openresty。&lt;/p&gt;
&lt;p&gt;项目地址：https://github.com/chaitin/safeline&lt;/p&gt;
&lt;p&gt;官网地址：https://waf-ce.chaitin.cn/&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://waf.chaitin.com/&#34;&gt;https://waf.chaitin.com/&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;备注：其他流行网关，比如Apisix，Kong，Openresty等&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;2安装&#34;&gt;2、安装&lt;/h2&gt;
&lt;h3 id=&#34;下载离线镜像&#34;&gt;下载离线镜像&lt;/h3&gt;
&lt;p&gt;由于前几天，很多国内的dockerhub镜像加速已经不可用了,所以这里只能离线了。&lt;/p&gt;
&lt;div class=&#34;highlight-container&#34;&gt;

  &lt;button class=&#34;copy-code-btn outline&#34;&gt;Copy&lt;/button&gt;

  
  &lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;
&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-0-1&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-0-1&#34;&gt; 1&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-0-2&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-0-2&#34;&gt; 2&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-0-3&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-0-3&#34;&gt; 3&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-0-4&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-0-4&#34;&gt; 4&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-0-5&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-0-5&#34;&gt; 5&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-0-6&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-0-6&#34;&gt; 6&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-0-7&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-0-7&#34;&gt; 7&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-0-8&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-0-8&#34;&gt; 8&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-0-9&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-0-9&#34;&gt; 9&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-0-10&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-0-10&#34;&gt;10&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-0-11&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-0-11&#34;&gt;11&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-0-12&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-0-12&#34;&gt;12&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-0-13&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-0-13&#34;&gt;13&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-0-14&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-0-14&#34;&gt;14&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-0-15&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-0-15&#34;&gt;15&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-0-16&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-0-16&#34;&gt;16&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-0-17&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-0-17&#34;&gt;17&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-0-18&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-0-18&#34;&gt;18&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-0-19&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-0-19&#34;&gt;19&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-0-20&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-0-20&#34;&gt;20&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-0-21&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-0-21&#34;&gt;21&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-0-22&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-0-22&#34;&gt;22&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-0-23&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-0-23&#34;&gt;23&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-0-24&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-0-24&#34;&gt;24&lt;/a&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#60a0b0;font-style:italic&#34;&gt;# mkdir /opt/safeline&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#60a0b0;font-style:italic&#34;&gt;# cd /opt/safeline&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#60a0b0;font-style:italic&#34;&gt;# wget https://demo.waf-ce.chaitin.cn/image.tar.gz&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#60a0b0;font-style:italic&#34;&gt;# cat image.tar.gz | gzip -d | docker load&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#60a0b0;font-style:italic&#34;&gt;# docker ps &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;REPOSITORY                                                           TAG       IMAGE ID       CREATED         SIZE
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;chaitin/safeline-fvm                                                 latest    d9589d01be57   &lt;span style=&#34;color:#40a070&#34;&gt;3&lt;/span&gt; days ago      175MB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;swr.cn-east-3.myhuaweicloud.com/chaitin-safeline/safeline-fvm        latest    d9589d01be57   &lt;span style=&#34;color:#40a070&#34;&gt;3&lt;/span&gt; days ago      175MB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;chaitin/safeline-mgt                                                 latest    56ef6365e4c3   &lt;span style=&#34;color:#40a070&#34;&gt;3&lt;/span&gt; days ago      81.6MB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;swr.cn-east-3.myhuaweicloud.com/chaitin-safeline/safeline-mgt        latest    56ef6365e4c3   &lt;span style=&#34;color:#40a070&#34;&gt;3&lt;/span&gt; days ago      81.6MB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;chaitin/safeline-luigi                                               latest    1423e012eef0   &lt;span style=&#34;color:#40a070&#34;&gt;3&lt;/span&gt; days ago      31.8MB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;swr.cn-east-3.myhuaweicloud.com/chaitin-safeline/safeline-luigi      latest    1423e012eef0   &lt;span style=&#34;color:#40a070&#34;&gt;3&lt;/span&gt; days ago      31.8MB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;chaitin/safeline-mario                                               latest    758fd16c3d30   &lt;span style=&#34;color:#40a070&#34;&gt;3&lt;/span&gt; days ago      201MB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;swr.cn-east-3.myhuaweicloud.com/chaitin-safeline/safeline-mario      latest    758fd16c3d30   &lt;span style=&#34;color:#40a070&#34;&gt;3&lt;/span&gt; days ago      201MB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;chaitin/safeline-bridge                                              latest    94aaed2a1b5a   &lt;span style=&#34;color:#40a070&#34;&gt;3&lt;/span&gt; days ago      17.9MB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;swr.cn-east-3.myhuaweicloud.com/chaitin-safeline/safeline-bridge     latest    94aaed2a1b5a   &lt;span style=&#34;color:#40a070&#34;&gt;3&lt;/span&gt; days ago      17.9MB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;chaitin/safeline-tengine                                             latest    c67893333287   &lt;span style=&#34;color:#40a070&#34;&gt;3&lt;/span&gt; days ago      140MB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;swr.cn-east-3.myhuaweicloud.com/chaitin-safeline/safeline-tengine    latest    c67893333287   &lt;span style=&#34;color:#40a070&#34;&gt;3&lt;/span&gt; days ago      140MB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;chaitin/safeline-detector                                            latest    f5cff5cc7e35   &lt;span style=&#34;color:#40a070&#34;&gt;3&lt;/span&gt; days ago      179MB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;swr.cn-east-3.myhuaweicloud.com/chaitin-safeline/safeline-detector   latest    f5cff5cc7e35   &lt;span style=&#34;color:#40a070&#34;&gt;3&lt;/span&gt; days ago      179MB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;chaitin/safeline-chaos                                               latest    71b05b47e3fd   &lt;span style=&#34;color:#40a070&#34;&gt;3&lt;/span&gt; days ago      118MB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;swr.cn-east-3.myhuaweicloud.com/chaitin-safeline/safeline-chaos      latest    71b05b47e3fd   &lt;span style=&#34;color:#40a070&#34;&gt;3&lt;/span&gt; days ago      118MB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;chaitin/safeline-postgres                                            15.2      bf700010ce28   &lt;span style=&#34;color:#40a070&#34;&gt;13&lt;/span&gt; months ago   379MB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;swr.cn-east-3.myhuaweicloud.com/chaitin-safeline/safeline-postgres   15.2      bf700010ce28   &lt;span style=&#34;color:#40a070&#34;&gt;13&lt;/span&gt; months ago   379MB&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;配置环境&#34;&gt;配置环境&lt;/h3&gt;
&lt;div class=&#34;highlight-container&#34;&gt;

  &lt;button class=&#34;copy-code-btn outline&#34;&gt;Copy&lt;/button&gt;

  
  &lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;
&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-1-1&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-1-1&#34;&gt;1&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-1-2&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-1-2&#34;&gt;2&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-1-3&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-1-3&#34;&gt;3&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-1-4&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-1-4&#34;&gt;4&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-1-5&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-1-5&#34;&gt;5&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-1-6&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-1-6&#34;&gt;6&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-1-7&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-1-7&#34;&gt;7&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-1-8&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-1-8&#34;&gt;8&lt;/a&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#60a0b0;font-style:italic&#34;&gt;# cd  /opt/safeline&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#60a0b0;font-style:italic&#34;&gt;# vim .env&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#bb60d5&#34;&gt;SAFELINE_DIR&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;/opt/safeline
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#bb60d5&#34;&gt;IMAGE_TAG&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;latest
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#bb60d5&#34;&gt;MGT_PORT&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#40a070&#34;&gt;9443&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#bb60d5&#34;&gt;POSTGRES_PASSWORD&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;Pgssf201Waf
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#bb60d5&#34;&gt;SUBNET_PREFIX&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;172.22.222
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#bb60d5&#34;&gt;IMAGE_PREFIX&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;chaitin&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;SAFELINE_DIR: 雷池安装目录，这里配置/opt/safeline&lt;/li&gt;
&lt;li&gt;IMAGE_TAG: 要安装的雷池版本，保持默认的 latest 即可&lt;/li&gt;
&lt;li&gt;MGT_PORT: 雷池控制台的端口，保持默认的 9443 即可&lt;/li&gt;
&lt;li&gt;POSTGRES_PASSWORD: 雷池所需数据库的初始化密码，请随机生成一个&lt;/li&gt;
&lt;li&gt;SUBNET_PREFIX: 雷池内部网络的网段，保持默认的 172.22.222 即可&lt;/li&gt;
&lt;li&gt;IMAGE_PREFIX: 雷池镜像源的前缀，保持默认的 chaitin 即可&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;docker-compose管理容器&#34;&gt;docker-compose管理容器：&lt;/h3&gt;
&lt;div class=&#34;highlight-container&#34;&gt;

  &lt;button class=&#34;copy-code-btn outline&#34;&gt;Copy&lt;/button&gt;

  
  &lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;
&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-2-1&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-2-1&#34;&gt; 1&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-2-2&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-2-2&#34;&gt; 2&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-2-3&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-2-3&#34;&gt; 3&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-2-4&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-2-4&#34;&gt; 4&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-2-5&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-2-5&#34;&gt; 5&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-2-6&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-2-6&#34;&gt; 6&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-2-7&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-2-7&#34;&gt; 7&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-2-8&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-2-8&#34;&gt; 8&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-2-9&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-2-9&#34;&gt; 9&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-2-10&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-2-10&#34;&gt;10&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-2-11&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-2-11&#34;&gt;11&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-2-12&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-2-12&#34;&gt;12&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-2-13&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-2-13&#34;&gt;13&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-2-14&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-2-14&#34;&gt;14&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-2-15&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-2-15&#34;&gt;15&lt;/a&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#60a0b0;font-style:italic&#34;&gt;# cd &amp;#34;/opt/safeline&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#60a0b0;font-style:italic&#34;&gt;# wget &amp;#34;https://waf-ce.chaitin.cn/release/latest/compose.yaml&amp;#34;  -O docker-compose.yaml&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#60a0b0;font-style:italic&#34;&gt;# docker-compose  up -d&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#60a0b0;font-style:italic&#34;&gt;# docker-compose ps &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Name                     Command                  State                            Ports
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--------------------------------------------------------------------------------------------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;safeline-bridge     /app/bridge serve -n unix  ...   Up
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;safeline-chaos      ./entrypoint.sh                  Up             9000/tcp
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;safeline-detector   /detector/entrypoint.sh          Up &lt;span style=&#34;color:#666&#34;&gt;(&lt;/span&gt;healthy&lt;span style=&#34;color:#666&#34;&gt;)&lt;/span&gt;   8000/tcp, 8001/tcp
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;safeline-fvm        ./fvm /app/config.yml            Up
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;safeline-luigi      /bin/sh -c /app/luigi            Up             80/tcp
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;safeline-mario      /mario/entrypoint.sh             Up &lt;span style=&#34;color:#666&#34;&gt;(&lt;/span&gt;healthy&lt;span style=&#34;color:#666&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;safeline-mgt        /docker-entrypoint.sh /bin ...   Up &lt;span style=&#34;color:#666&#34;&gt;(&lt;/span&gt;healthy&lt;span style=&#34;color:#666&#34;&gt;)&lt;/span&gt;   0.0.0.0:9443-&amp;gt;1443/tcp,:::9443-&amp;gt;1443/tcp, 80/tcp
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;safeline-pg         docker-entrypoint.sh postg ...   Up &lt;span style=&#34;color:#666&#34;&gt;(&lt;/span&gt;healthy&lt;span style=&#34;color:#666&#34;&gt;)&lt;/span&gt;   5432/tcp
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;safeline-tengine    entrypoint.sh nginx -g dae ...   Up&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;第一次登录雷池需要初始化管理员账户，执行以下命令即可&lt;/p&gt;
&lt;div class=&#34;highlight-container&#34;&gt;

  &lt;button class=&#34;copy-code-btn outline&#34;&gt;Copy&lt;/button&gt;

  
  &lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;
&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-3-1&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-3-1&#34;&gt;1&lt;/a&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker &lt;span style=&#34;color:#007020&#34;&gt;exec&lt;/span&gt; safeline-mgt resetadmin&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;命令执行完成后会随机重置 admin 账户的密码，输出结果如下&lt;/p&gt;
&lt;div class=&#34;highlight-container&#34;&gt;

  &lt;button class=&#34;copy-code-btn outline&#34;&gt;Copy&lt;/button&gt;

  
  &lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[SafeLine] Initial username：admin
[SafeLine] Initial password：**********
[SafeLine] Done&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;到这里基本安装完成，只需要云端ACL开放9443端口访问即可&lt;/p&gt;
&lt;p&gt;可以打开浏览器访问 https://&lt;safeline-ip&gt;:9443/ 来使用雷池控制台&lt;/p&gt;
&lt;h2 id=&#34;3网站配置&#34;&gt;3、网站配置&lt;/h2&gt;
&lt;h3 id=&#34;ssl证书配置&#34;&gt;SSL证书配置：&lt;/h3&gt;
&lt;p&gt;支持自定义上传证书和申请免费证书两种。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wnote.com/images/2024/safeline1002.png&#34; alt=&#34;添加证书&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;添加站点&#34;&gt;添加站点：&lt;/h3&gt;
&lt;p&gt;添加站点，另外这里默认已经开启人机验证、身份验证、动态防护;需要注意的是这里添加上游服务器时，回源比较模糊，比如回源端口配置、协议等&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wnote.com/images/2024/safeline1001.png&#34; alt=&#34;添加站点&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;代理配置&#34;&gt;代理配置：&lt;/h3&gt;
&lt;p&gt;&lt;img src=&#34;https://wnote.com/images/2024/safeline1003.png&#34; alt=&#34;代理配置&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;安全防护设置&#34;&gt;安全防护设置：&lt;/h3&gt;
&lt;p&gt;这里主要配置频率限制(类似nginx limit)、自定义规则(根据http头信息设置规则)、语意分析(注入相关)等&lt;/p&gt;
&lt;p&gt;限制访问频率: 底层逻辑和nginx下limit_req、limit_conn、limit_rate 差不多&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wnote.com/images/2024/safeline1004.png&#34; alt=&#34;频率限制&#34;&gt;&lt;/p&gt;
&lt;p&gt;自定义规则: 主要根据http头部信息做一些策略，和常用CDN的访问控制类似，但是这个功能更灵活.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wnote.com/images/2024/safeline1005.png&#34; alt=&#34;自定义规则1&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wnote.com/images/2024/safeline1007.png&#34; alt=&#34;自定义规则2&#34;&gt;&lt;/p&gt;
&lt;p&gt;语义分析: 主要是识别各种注入、机器人检测等&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wnote.com/images/2024/safeline1006.png&#34; alt=&#34;语义分析&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;4总结&#34;&gt;4、总结&lt;/h2&gt;
&lt;p&gt;通过两天测试，雷池基本满足我这个小破站的需求，但是它也有很多无法满足的地方。&lt;/p&gt;
&lt;p&gt;比如：申请免费证书不支持泛域名、上游服务器回源协议模糊等&lt;/p&gt;
&lt;p&gt;最后，放一张效果图.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://wnote.com/images/2024/safeline1008.png&#34; alt=&#34;雷池后台首页&#34;&gt;&lt;/p&gt;
&lt;p&gt;参考：
&lt;a href=&#34;https://docs.waf-ce.chaitin.cn/zh/home&#34;&gt;https://docs.waf-ce.chaitin.cn/zh/home&lt;/a&gt;&lt;/p&gt;
</description>
      
    </item>
    
    <item>
      <title>对CDN建设一些总结与思考</title>
      <link>https://wanzi.dev/zh-cn/post/linux-cdn-cloud-aliyun-cloudfront/</link>
      <pubDate>Wed, 07 Sep 2022 12:22:42 +0800</pubDate>
      <author>wzdushu@gmail.com (wanzi)</author>
      <guid>https://wanzi.dev/zh-cn/post/linux-cdn-cloud-aliyun-cloudfront/</guid>
      
        <description>&lt;p&gt;新冠病毒疫情反反复复，对于日常生活和工作造成了不小影响，对于我最近半年发生了太多事情，家中亲人病重，奶奶去世，有很多事儿要忙，所以博客也停更了半年;&lt;/p&gt;
&lt;p&gt;面对经济不景气，各行各业开始了裁员，很多公司业务开始收缩，趁着最近闲暇，把以前CDN工作经历做一个简单总结。&lt;/p&gt;
&lt;h2 id=&#34;一大型网站架构剖析&#34;&gt;一、大型网站架构剖析：&lt;/h2&gt;
&lt;p&gt;移动互联网时代，对于一个高并发的大型网站，架构的设计都不会太简单，我简单从如下几个方面概括一下：&lt;/p&gt;
&lt;h3 id=&#34;1客户端&#34;&gt;1、客户端：&lt;/h3&gt;
&lt;p&gt;设备端主要电脑PC、移动手机、智能设备等&lt;/p&gt;
&lt;p&gt;浏览器层主要有Chrome、微软IE/Edge、Safari、火狐Firefox、欧鹏Opera等，这里主要以浏览器内核为准统计。&lt;/p&gt;
&lt;p&gt;协议层：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;（1）普通网页：Http1.1/Http2/Quic&lt;/li&gt;
&lt;li&gt;（2）流媒体：Rtmp/Http-FLV/HLS(m3u8)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2cdn层&#34;&gt;2、CDN层：&lt;/h3&gt;
&lt;p&gt;对于中小型网站一般采用商用CDN即可&lt;/p&gt;
&lt;p&gt;对于大型和特大型网站，建议采用自建和商用CDN，这个后边我会详细介绍。&lt;/p&gt;
&lt;p&gt;在CDN领域，主要有两大部分组成，缓存层+调度层。&lt;/p&gt;
&lt;p&gt;对于不同业务形态，一般分为静态加速、动态加速、下载加速、音频加速、视频加速、直播加速、P2P加速、安全加速。&lt;/p&gt;
&lt;h3 id=&#34;3静态服务&#34;&gt;3、静态服务：&lt;/h3&gt;
&lt;p&gt;前端业务形态一般分为H5、小程序、安卓、IOS，主要元素有HTML/CSS/JS&lt;/p&gt;
&lt;p&gt;前端主流框架，VUE/React/Angular&lt;/p&gt;
&lt;p&gt;一般服务器端使用Nginx或Openrestry搭建，设置SSL证书、过期时间、跨域配置等即可。&lt;/p&gt;
&lt;h3 id=&#34;4动态服务&#34;&gt;4、动态服务：&lt;/h3&gt;
&lt;p&gt;一般根据公司主力编程语言，一般为php/java/golang/python等&lt;/p&gt;
&lt;p&gt;目前大部分公司都会把动态服务跑在docker或者k8s集群&lt;/p&gt;
&lt;p&gt;对于动态层面，如果无法做到动静分离，必须要走CDN，建议配置策略回源，减少路由损失。&lt;/p&gt;
&lt;h3 id=&#34;5数据缓存层&#34;&gt;5、数据缓存层：&lt;/h3&gt;
&lt;p&gt;这部分主要采用Redis或Memcached
云原生生态链也有采用etcd或tikv做缓存的。&lt;/p&gt;
&lt;h3 id=&#34;6数据库服务器&#34;&gt;6、数据库服务器：&lt;/h3&gt;
&lt;p&gt;传统数据库主要有Mysql、MariaDB、PostgreSQL、SqlServer、Oracle、DB2关系型数据库。&lt;/p&gt;
&lt;p&gt;对非关系型数据库（NoSQL），主要代表有Mongodb、Hbase、Cassandra（facebook）等。&lt;/p&gt;
&lt;p&gt;随着对性能和海量数据要求越来越高，新型分布式数据库发展越来越好，比如Tidb(PingCAP开源)、Greenplum、DorisDB(百度开源)、Clickhouse等&lt;/p&gt;
&lt;h3 id=&#34;7分布式数据存储&#34;&gt;7、分布式数据存储：&lt;/h3&gt;
&lt;p&gt;一般采用Ceph/HDFS/GlusterFS/GFS根据不同类型场景选择不同存储软件。&lt;/p&gt;
&lt;p&gt;目前主流以Ceph和HDFS两大阵营为主，很多云厂商底层采用Ceph，主要是它支持块存储、对象存储、文件系统，同时openstack默认就走的这货，对k8s支持也比较完善；而HDFS主要满足海量数据存储，一般配合hadoop和Spark使用，对云原生支持不是很好。&lt;/p&gt;
&lt;h2 id=&#34;二自建cdn还是商用cdn&#34;&gt;二、自建CDN还是商用CDN？&lt;/h2&gt;
&lt;h3 id=&#34;1选择cdn&#34;&gt;1、选择CDN&lt;/h3&gt;
&lt;p&gt;是考虑自建CDN还是采用商用CDN，我觉得需要根据公司业务规模以及成本、场景来考量。&lt;/p&gt;
&lt;p&gt;对于普通静态文件CDN加速，规模在1000万PV以下，不要考虑自建CDN，商用CDN即可满足，调度策略优先选择价格低廉、服务效果好的CDN；&lt;/p&gt;
&lt;p&gt;对于大文件下载CDN加速，这类如果公司带宽不富裕，不建议自建CDN，商用CDN即可；&lt;/p&gt;
&lt;p&gt;对于音频和点播加速，这类如果研发团队实力不够强，建议采用商用CDN，建议采用价格低、节点多、效果好的CDN；&lt;/p&gt;
&lt;p&gt;对于直播加速，这类对体验效果要求较高，主要考量CDN节点网络质量，建议采用大型云CDN厂商。&lt;/p&gt;
&lt;p&gt;对于动态加速、安全加速，优先考虑回源链路优秀、安全策略完善CDN厂商。&lt;/p&gt;
&lt;h3 id=&#34;2如何自建cdn&#34;&gt;2、如何自建CDN？&lt;/h3&gt;
&lt;p&gt;对于服务器硬件，从硬盘、内存、CPU考虑采用性价比更高服务器；&lt;/p&gt;
&lt;p&gt;对于机房带宽，首选运营商代理商，优选条件：机房出口大，链路优秀，有硬防护等；&lt;/p&gt;
&lt;p&gt;对于缓存节点，选型一般为Nginx或Apache traffic server或者varnish、squid；&lt;/p&gt;
&lt;p&gt;对于调度系统，首选第三方智能CDN，有一定研发实力可以考虑Bind View或Bind DLZ；&lt;/p&gt;
&lt;p&gt;对于CDN高可用负载均衡，选型考虑LVS、Nginx、Keepalived、Haproxy&lt;/p&gt;
&lt;h3 id=&#34;3如何选择商用cdn&#34;&gt;3、如何选择商用CDN？&lt;/h3&gt;
&lt;p&gt;对于国内提供CDN厂商，主要有阿里云、腾讯云、网宿、华为云、百度云、金山云、白山云、七牛云、蓝汛、又拍云、帝联、ucloud、青云等&lt;/p&gt;
&lt;p&gt;对于海外提供CDN厂商，主要有AWS的cloudfront、Akamai、Google、Fastly、Limelight、Cloudflare、StackPath、CDNetworks等&lt;/p&gt;
&lt;p&gt;无论国内还是海外，在选择CDN的时候可以参考如下指标进行选择：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;（1）节点分布，如果CDN分布节点越多，越靠近用户，一般加速效果越好；&lt;/li&gt;
&lt;li&gt;（2）首屏时间，用户第一次打开时间，这个指标越短，用户体验越好；&lt;/li&gt;
&lt;li&gt;（3）节点延迟，用户侧到CDN节点延迟越短，说明网路链路效果越好；&lt;/li&gt;
&lt;li&gt;（4）下载速度，用户下载文件速度很快，说明服务器性能和网络都很好；&lt;/li&gt;
&lt;li&gt;（5）丢包率，用户侧丢包率很高，说明用户到CDN节点整体网络效果不好；&lt;/li&gt;
&lt;li&gt;（6）回源率，从回源请求数比例和回源流量比例入手，越低越好，说明CDN帮你抗下了流量；&lt;/li&gt;
&lt;li&gt;（7）命中率，命中率越高，说明CDN缓存资源越多，加速效果越好；&lt;/li&gt;
&lt;li&gt;（8）平台功能是否丰富，基本功能是否完善，界面体验效果如何；&lt;/li&gt;
&lt;li&gt;（9）运营团队响应速度，反馈后多久能给响应、处理；&lt;/li&gt;
&lt;li&gt;（10）调度策略，观察服务商调度策略是否合理。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;三总结&#34;&gt;三、总结&lt;/h2&gt;
&lt;p&gt;对于最近几年，云计算时代来临，国内CDN行业也算来了一次大洗牌，原先CDN巨头网宿、蓝汛，目前已经被阿里云、腾讯云替代；曾经的帝联业务也越来越不行，快网被世纪互联收购，白山云转型边缘云计算，其他中型云厂商如金山云、ucloud、七牛云、又拍云正在逐步瓜分这个市场。&lt;/p&gt;
&lt;p&gt;写在最后，未来CDN行业发展方向该如何，这个谁也不知道，根据目前这势头，各家厂商都在大搞边缘计算，随着5G、人工智能、容器技术迭代升级，CDN不仅仅只是一门技术那么简单了，它需要不断的和其他技术整合，最终应用到我们生活中。&lt;/p&gt;
</description>
      
    </item>
    
  </channel>
</rss>
