You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@apisix.apache.org by gi...@apache.org on 2021/02/25 03:14:14 UTC

[apisix-website] branch asf-site updated: deploy: 442a0a0d9d34b2dd85ee2bc3c289c1c610a02160

This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/apisix-website.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new a28b831  deploy: 442a0a0d9d34b2dd85ee2bc3c289c1c610a02160
a28b831 is described below

commit a28b831071847db1a3f30bd332e8708fd206b898
Author: juzhiyuan <ju...@users.noreply.github.com>
AuthorDate: Thu Feb 25 03:14:03 2021 +0000

    deploy: 442a0a0d9d34b2dd85ee2bc3c289c1c610a02160
---
 0b71e11c.05865a83.js                               |   1 -
 1.b3395235.js                                      |   1 -
 2.05b0df04.js                                      |   2 -
 2da51850.b6eaa949.js                               |   1 -
 2fa/index.html                                     |  38 ---
 404.html                                           |  28 +--
 47.ebb97f1e.js                                     |   1 -
 47f8a22a.39ee8202.js                               |   1 -
 638581dc.05c618c5.js                               |   1 -
 812d7c14.8e5096f0.js                               |   1 -
 935f2afb.cf13d7b3.js                               |   1 -
 98c69322.58eaa6a3.js                               |   1 -
 a6641250.59f84a4a.js                               |   1 -
 .../css/styles.545fc2a3.css                        |   2 +-
 assets/js/1.b21fad17.js                            |   1 +
 .../js/12e5767f.2a3dfa9d.js                        |   2 +-
 .../js/17896441.ab569ce4.js                        |   2 +-
 .../js/17dc512b.570e01fe.js                        |   2 +-
 assets/js/1b2ed0ef.fd13d6e7.js                     |   1 +
 .../js/1be5d2e8.0ab794df.js                        |   2 +-
 assets/js/1be78505.0c1819df.js                     |   1 +
 .../js/1c89ab3b.d668bc40.js                        |   2 +-
 assets/js/2.c74b4887.js                            |   2 +
 .../js/2.c74b4887.js.LICENSE.txt                   |   0
 assets/js/25b7c3f2.1e053d90.js                     |   1 +
 .../js/2d8fe9ee.09d7d664.js                        |   2 +-
 3.538bc209.js => assets/js/3.e5911a24.js           |   2 +-
 assets/js/30788500.5be7947f.js                     |   1 +
 .../js/37e3b3ea.bccc6220.js                        |   2 +-
 assets/js/3dc9f306.7c164520.js                     |   1 +
 4.ce841e81.js => assets/js/4.f867f6a9.js           |   2 +-
 .../js/41b4926b.b72ec77b.js                        |   2 +-
 .../js/47e0bf55.a6c19db6.js                        |   2 +-
 assets/js/47f8a22a.e97fe1a0.js                     |   1 +
 .../js/4eed9ed2.f6cbdbbf.js                        |   2 +-
 assets/js/50facf8e.dfead7b3.js                     |   1 +
 .../js/514de2af.d980fd4f.js                        |   2 +-
 46.1c9dd603.js => assets/js/54.b7cce01d.js         |   4 +-
 .../js/54.b7cce01d.js.LICENSE.txt                  |   0
 assets/js/55.e6e1e1c1.js                           |   1 +
 48.cfa52399.js => assets/js/56.56a582f4.js         |   2 +-
 49.f29e5dd3.js => assets/js/57.ff9147f8.js         |   2 +-
 .../js/574dc000.24d7bcfe.js                        |   2 +-
 50.8a9a9fdc.js => assets/js/58.79cc1bdb.js         |   2 +-
 51.b0dede12.js => assets/js/59.654079dd.js         |   2 +-
 .../js/5bb67ffc.ef54c73b.js                        |   2 +-
 assets/js/66fbb9c2.048f45e2.js                     |   1 +
 assets/js/6f9b6084.6cf4e9dd.js                     |   1 +
 .../js/749ed826.dbea5f11.js                        |   2 +-
 assets/js/7af3052c.bcbd3a54.js                     |   1 +
 .../js/7e37206e.7992680e.js                        |   2 +-
 .../js/859cc09f.fd7722bd.js                        |   2 +-
 assets/js/8e784bf3.75bea260.js                     |   1 +
 assets/js/935f2afb.66e0e7d2.js                     |   1 +
 assets/js/98c69322.3d9a7897.js                     |   1 +
 .../js/a4a2cefa.4d2fd8e2.js                        |   2 +-
 assets/js/a6641250.4759241f.js                     |   1 +
 .../js/a6aa9e1f.81639056.js                        |   2 +-
 assets/js/adbb350b.d0a4f987.js                     |   1 +
 assets/js/b2b675dd.f78e88c7.js                     |   1 +
 assets/js/b4a67526.6f6704ad.js                     |   1 +
 assets/js/bacea567.58c33be1.js                     |   1 +
 .../js/c119cf3c.a240434d.js                        |   2 +-
 .../js/c4f5d8e4.a4d61c1b.js                        |   2 +-
 .../js/c5594f1a.b73b27b8.js                        |   2 +-
 assets/js/ccc49370.938f9db4.js                     |   1 +
 .../js/d4de91ec.5615c552.js                        |   2 +-
 assets/js/d73fca9b.100c8f68.js                     |   1 +
 .../js/e02da2c5.d84d16c5.js                        |   2 +-
 .../js/e451ae2c.162a757f.js                        |   2 +-
 assets/js/f243156b.1561d1a4.js                     |   1 +
 .../js/f7488fe8.e624b827.js                        |   2 +-
 .../js/fa919c95.8686a53b.js                        |   2 +-
 assets/js/main.e86f8eb4.js                         |   2 +
 .../js/main.e86f8eb4.js.LICENSE.txt                |   0
 assets/js/runtime~main.1cc43786.js                 |   1 +
 assets/js/styles.69143f42.js                       |   1 +
 b2b675dd.24401601.js                               |   1 -
 bacea567.b9d05017.js                               |   1 -
 blog/2020/08/22/new-website/index.html             |  42 ++--
 .../index.html                                     |  46 ++--
 .../index.html                                     |  42 ++--
 .../21/run-ingress-apisix-on-amazon-eks/index.html |  44 ++--
 .../index.html                                     |  42 ++--
 blog/index.html                                    |  68 +++---
 ccc49370.5f3fc8be.js                               |   1 -
 committer-guide/index.html                         |  38 ---
 contributor-guide/index.html                       |  38 ---
 dcd70f61.96d3e47f.js                               |   1 -
 docs/apisix/introduction/index.html                |  36 +++
 docs/dashboard/introduction/index.html             |  36 +++
 docs/general/2fa/index.html                        |  36 +++
 docs/general/committer-guide/index.html            |  36 +++
 docs/general/contributor-guide/index.html          |  36 +++
 .../general/release-guide}/index.html              |  58 +++--
 docs/general/security/index.html                   |  36 +++
 docs/general/subscribe-guide/index.html            |  36 +++
 docs/index.html                                    |  32 +++
 docs/ingress-controller/introduction/index.html    |  36 +++
 downloads/ProjectCard/index.html                   |  28 +--
 downloads/index.html                               |  42 ++--
 .../index.html                                     |  42 ++--
 .../index.html                                     |  42 ++--
 .../02/09/release-apache-apisix-2.3/index.html     |  42 ++--
 .../index.html                                     |  42 ++--
 .../release-apache-apisix-dashboard-2.4/index.html |  42 ++--
 events/index.html                                  |  62 ++---
 fdbbc319.b6671752.js                               |   1 -
 help/index.html                                    |  34 +--
 index.html                                         |  34 +--
 main.be0eaecb.js                                   |   2 -
 runtime~main.dfaa07c6.js                           |   1 -
 search/index.html                                  |  30 +--
 security/index.html                                |  38 ---
 sitemap.xml                                        |   2 +-
 styles.f6196f2d.js                                 |   1 -
 subscribe-guide/index.html                         |  38 ---
 team/index.html                                    |  34 +--
 zh/404.html                                        |  24 ++
 .../assets/css/styles.545fc2a3.css                 |   2 +-
 ...lease_flow-7cedd869bc884c40bf9f9f1ce8dded9e.png | Bin 0 -> 70396 bytes
 zh/assets/js/1.b21fad17.js                         |   1 +
 zh/assets/js/12e5767f.d61c8e43.js                  |   1 +
 .../assets/js/17896441.ab569ce4.js                 |   2 +-
 .../assets/js/17dc512b.888d5c12.js                 |   2 +-
 zh/assets/js/1b2ed0ef.1ea9785f.js                  |   1 +
 zh/assets/js/1be5d2e8.8711092b.js                  |   1 +
 zh/assets/js/1be78505.0c1819df.js                  |   1 +
 zh/assets/js/1c89ab3b.19ea93a0.js                  |   1 +
 zh/assets/js/2.c74b4887.js                         |   2 +
 .../assets/js/2.c74b4887.js.LICENSE.txt            |   0
 zh/assets/js/25b7c3f2.1e053d90.js                  |   1 +
 zh/assets/js/2d8fe9ee.fbf876c8.js                  |   1 +
 3.538bc209.js => zh/assets/js/3.e5911a24.js        |   2 +-
 zh/assets/js/30788500.8f19702c.js                  |   1 +
 .../assets/js/37e3b3ea.6fa5c709.js                 |   2 +-
 zh/assets/js/3a332aed.00986c3a.js                  |   1 +
 zh/assets/js/3dc9f306.409bfade.js                  |   1 +
 4.ce841e81.js => zh/assets/js/4.a448f392.js        |   2 +-
 zh/assets/js/41b4926b.702246a9.js                  |   1 +
 zh/assets/js/47e0bf55.1e18a655.js                  |   1 +
 zh/assets/js/47f8a22a.b9d7e773.js                  |   1 +
 zh/assets/js/4eed9ed2.6483805d.js                  |   1 +
 zh/assets/js/50facf8e.d92bb643.js                  |   1 +
 zh/assets/js/514de2af.c87083ac.js                  |   1 +
 46.1c9dd603.js => zh/assets/js/54.b7cce01d.js      |   4 +-
 .../assets/js/54.b7cce01d.js.LICENSE.txt           |   0
 zh/assets/js/55.e6e1e1c1.js                        |   1 +
 48.cfa52399.js => zh/assets/js/56.56a582f4.js      |   2 +-
 49.f29e5dd3.js => zh/assets/js/57.ff9147f8.js      |   2 +-
 50.8a9a9fdc.js => zh/assets/js/58.79cc1bdb.js      |   2 +-
 51.b0dede12.js => zh/assets/js/59.654079dd.js      |   2 +-
 zh/assets/js/5bb67ffc.5facfc0f.js                  |   1 +
 zh/assets/js/66fbb9c2.5fc56aad.js                  |   1 +
 zh/assets/js/6f9b6084.47c7a420.js                  |   1 +
 zh/assets/js/749ed826.21ee0429.js                  |   1 +
 zh/assets/js/7af3052c.0d0ad0ce.js                  |   1 +
 .../assets/js/7e37206e.7992680e.js                 |   2 +-
 zh/assets/js/7ecc8185.2402dced.js                  |   1 +
 .../assets/js/859cc09f.feab14f8.js                 |   2 +-
 zh/assets/js/8e784bf3.b5256bf0.js                  |   1 +
 zh/assets/js/935f2afb.2a534bfd.js                  |   1 +
 zh/assets/js/98c69322.bcfd2dda.js                  |   1 +
 zh/assets/js/a4a2cefa.309c52fd.js                  |   1 +
 zh/assets/js/a6641250.a8f6a2f7.js                  |   1 +
 .../assets/js/a6aa9e1f.c641128b.js                 |   2 +-
 zh/assets/js/adbb350b.cfedb21c.js                  |   1 +
 zh/assets/js/b4a67526.ad72e997.js                  |   1 +
 zh/assets/js/bacea567.49cd87f9.js                  |   1 +
 zh/assets/js/c119cf3c.b661798c.js                  |   1 +
 .../assets/js/c4f5d8e4.a4d61c1b.js                 |   2 +-
 zh/assets/js/c5594f1a.d180ea48.js                  |   1 +
 zh/assets/js/ccc49370.938f9db4.js                  |   1 +
 zh/assets/js/d4de91ec.55c63e46.js                  |   1 +
 zh/assets/js/d73fca9b.42736b26.js                  |   1 +
 zh/assets/js/e02da2c5.2b498400.js                  |   1 +
 zh/assets/js/e451ae2c.b451f25a.js                  |   1 +
 zh/assets/js/f243156b.3b8ec092.js                  |   1 +
 zh/assets/js/f7488fe8.ed219fa4.js                  |   1 +
 zh/assets/js/fa919c95.75271be3.js                  |   1 +
 zh/assets/js/main.20ae8921.js                      |   2 +
 .../assets/js/main.20ae8921.js.LICENSE.txt         |   0
 zh/assets/js/runtime~main.c157ebee.js              |   1 +
 zh/assets/js/styles.d25a02cf.js                    |   1 +
 zh/blog/2020/08/22/new-website/index.html          |  36 +++
 .../index.html                                     |  38 +++
 .../index.html                                     |  36 +++
 .../21/run-ingress-apisix-on-amazon-eks/index.html |  37 +++
 .../index.html                                     |  36 +++
 zh/blog/atom.xml                                   |  45 ++++
 zh/blog/index.html                                 |  49 ++++
 zh/blog/rss.xml                                    |  46 ++++
 zh/css/custom.css                                  |  21 ++
 zh/data/events.json                                |  22 ++
 zh/data/showcases.json                             | 255 +++++++++++++++++++++
 zh/data/team.json                                  | 210 +++++++++++++++++
 zh/docs/apisix/introduction/index.html             |  36 +++
 zh/docs/dashboard/introduction/index.html          |  36 +++
 zh/docs/general/2fa/index.html                     |  36 +++
 zh/docs/general/committer-guide/index.html         |  36 +++
 zh/docs/general/contributor-guide/index.html       |  36 +++
 zh/docs/general/release-guide/index.html           |  82 +++++++
 zh/docs/general/security/index.html                |  36 +++
 zh/docs/general/subscribe-guide/index.html         |  36 +++
 zh/docs/index.html                                 |  32 +++
 zh/docs/ingress-controller/introduction/index.html |  36 +++
 {downloads => zh/downloads}/ProjectCard/index.html |  38 +--
 zh/downloads/index.html                            |  37 +++
 .../index.html                                     |  36 +++
 .../index.html                                     |  36 +++
 .../02/09/release-apache-apisix-2.3/index.html     |  36 +++
 .../index.html                                     |  36 +++
 .../release-apache-apisix-dashboard-2.4/index.html |  36 +++
 zh/events/atom.xml                                 |  45 ++++
 zh/events/index.html                               |  46 ++++
 zh/events/rss.xml                                  |  46 ++++
 zh/help/index.html                                 |  32 +++
 zh/img/asf_logo_wide_small.png                     | Bin 0 -> 32278 bytes
 zh/img/community.png                               | Bin 0 -> 2413 bytes
 zh/img/documents.png                               | Bin 0 -> 1420 bytes
 zh/img/favicon.png                                 | Bin 0 -> 85376 bytes
 zh/img/logo.png                                    | Bin 0 -> 5876 bytes
 zh/img/release_flow.png                            | Bin 0 -> 70396 bytes
 zh/index.html                                      |  32 +++
 zh/opensearch.xml                                  |  11 +
 zh/robots.txt                                      |   2 +
 zh/search/index.html                               |  30 +++
 zh/sitemap.xml                                     |   1 +
 zh/team/index.html                                 |  32 +++
 229 files changed, 2635 insertions(+), 710 deletions(-)

diff --git a/0b71e11c.05865a83.js b/0b71e11c.05865a83.js
deleted file mode 100644
index 7a689c3..0000000
--- a/0b71e11c.05865a83.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{118:function(e,t,n){"use strict";n.d(t,"a",(function(){return p})),n.d(t,"b",(function(){return f}));var o=n(0),r=n.n(o);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))) [...]
\ No newline at end of file
diff --git a/1.b3395235.js b/1.b3395235.js
deleted file mode 100644
index bb058ee..0000000
--- a/1.b3395235.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[1],{119:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(148);Object.defineProperty(t,"useThemeConfig",{enumerable:!0,get:function(){return r.useThemeConfig}});var o=n(172);Object.defineProperty(t,"docVersionSearchTag",{enumerable:!0,get:function(){return o.docVersionSearchTag}}),Object.defineProperty(t,"DEFAULT_SEARCH_TAG",{enumerable:!0,get:function(){return o.DEFAULT_SEARCH_TAG}});var i=n(149);Ob [...]
\ No newline at end of file
diff --git a/2.05b0df04.js b/2.05b0df04.js
deleted file mode 100644
index 92e4191..0000000
--- a/2.05b0df04.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! For license information please see 2.05b0df04.js.LICENSE.txt */
-(window.webpackJsonp=window.webpackJsonp||[]).push([[2],{123:function(e,t,a){"use strict";var n=a(0),r=a.n(n),c=a(120),o=a(63),l=a.n(o);var i=function(){return r.a.createElement("nav",{"aria-label":"Skip navigation links"},r.a.createElement("button",{type:"button",tabIndex:0,className:l.a.skipToContent,onKeyDown:function(e){if(13===e.keyCode){document.activeElement.blur();var t=document.querySelector("main:first-of-type");t&&t.scrollIntoView()}}},"Skip to main content"))},s=a(119),u=a(15 [...]
\ No newline at end of file
diff --git a/2da51850.b6eaa949.js b/2da51850.b6eaa949.js
deleted file mode 100644
index d006d99..0000000
--- a/2da51850.b6eaa949.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{118:function(e,t,r){"use strict";r.d(t,"a",(function(){return p})),r.d(t,"b",(function(){return d}));var n=r(0),i=r.n(n);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})) [...]
\ No newline at end of file
diff --git a/2fa/index.html b/2fa/index.html
deleted file mode 100644
index 1b981a8..0000000
--- a/2fa/index.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-alpha.70">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">2FA | Apache APISIX™</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docsearch:language" content="en"><meta data-react-helmet="true" name="docsearch:version" content="current"><meta data-react-helmet="true" name="docsearch:docusaurus_tag" content="docs-default-cur [...]
-<link rel="preload" href="/styles.f6196f2d.js" as="script">
-<link rel="preload" href="/runtime~main.dfaa07c6.js" as="script">
-<link rel="preload" href="/main.be0eaecb.js" as="script">
-<link rel="preload" href="/1.b3395235.js" as="script">
-<link rel="preload" href="/2.05b0df04.js" as="script">
-<link rel="preload" href="/47.ebb97f1e.js" as="script">
-<link rel="preload" href="/50.8a9a9fdc.js" as="script">
-<link rel="preload" href="/935f2afb.cf13d7b3.js" as="script">
-<link rel="preload" href="/17896441.45b06d05.js" as="script">
-<link rel="preload" href="/0b71e11c.05865a83.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
-<script src="/styles.f6196f2d.js"></script>
-<script src="/runtime~main.dfaa07c6.js"></script>
-<script src="/main.be0eaecb.js"></script>
-<script src="/1.b3395235.js"></script>
-<script src="/2.05b0df04.js"></script>
-<script src="/47.ebb97f1e.js"></script>
-<script src="/50.8a9a9fdc.js"></script>
-<script src="/935f2afb.cf13d7b3.js"></script>
-<script src="/17896441.45b06d05.js"></script>
-<script src="/0b71e11c.05865a83.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/404.html b/404.html
index 3b7bdd4..e93bcbc 100644
--- a/404.html
+++ b/404.html
@@ -3,32 +3,22 @@
 <head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-alpha.70">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
 <link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/opensearch.xml">
 <link rel="alternate" type="application/rss+xml" href="/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Page Not Found | Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Page Not Found | Apache APISIX™"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docsearch:language" content="en"><meta data-react-helmet="true" name="docsearch:docusaurus_ [...]
-<link rel="preload" href="/styles.f6196f2d.js" as="script">
-<link rel="preload" href="/runtime~main.dfaa07c6.js" as="script">
-<link rel="preload" href="/main.be0eaecb.js" as="script">
-<link rel="preload" href="/1.b3395235.js" as="script">
-<link rel="preload" href="/2.05b0df04.js" as="script">
-<link rel="preload" href="/47.ebb97f1e.js" as="script">
-<link rel="preload" href="/50.8a9a9fdc.js" as="script">
-<link rel="preload" href="/935f2afb.cf13d7b3.js" as="script">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Page Not Found | Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Page Not Found | Apache APISIX™"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:url" content="https://apisix.apache.org//404.html"><meta data-react-helmet="true" na [...]
+<link rel="preload" href="/assets/js/styles.69143f42.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.1cc43786.js" as="script">
+<link rel="preload" href="/assets/js/main.e86f8eb4.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
-<script src="/styles.f6196f2d.js"></script>
-<script src="/runtime~main.dfaa07c6.js"></script>
-<script src="/main.be0eaecb.js"></script>
-<script src="/1.b3395235.js"></script>
-<script src="/2.05b0df04.js"></script>
-<script src="/47.ebb97f1e.js"></script>
-<script src="/50.8a9a9fdc.js"></script>
-<script src="/935f2afb.cf13d7b3.js"></script>
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+<script src="/assets/js/styles.69143f42.js"></script>
+<script src="/assets/js/runtime~main.1cc43786.js"></script>
+<script src="/assets/js/main.e86f8eb4.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/47.ebb97f1e.js b/47.ebb97f1e.js
deleted file mode 100644
index ecbb866..0000000
--- a/47.ebb97f1e.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[47,50],{114:function(e,t,n){"use strict";n.r(t);var a=n(0),r=n.n(a),o=n(118),c=n(22),l=n(27),i=n(123),s=n(3),u=n(7),p=n(120),m=n(119),d=n(151),b=n(157),f=n(158),y=n(156),h=n(121),g=n(136),v=n(170),j=function(e){return r.a.createElement("svg",Object(s.a)({width:"20",height:"20",role:"img"},e),r.a.createElement("g",{fill:"#7a7a7a"},r.a.createElement("path",{d:"M9.992 10.023c0 .2-.062.399-.172.547l-4.996 7.492a.982.982 0 01-.828.454H1c-.5 [...]
\ No newline at end of file
diff --git a/47f8a22a.39ee8202.js b/47f8a22a.39ee8202.js
deleted file mode 100644
index 01c2774..0000000
--- a/47f8a22a.39ee8202.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[16,27],{129:function(e,t,n){"use strict";const r=(e,{target:t=document.body}={})=>{const n=document.createElement("textarea"),r=document.activeElement;n.value=e,n.setAttribute("readonly",""),n.style.contain="strict",n.style.position="absolute",n.style.left="-9999px",n.style.fontSize="12pt";const a=document.getSelection();let o=!1;a.rangeCount>0&&(o=a.getRangeAt(0)),t.append(n),n.select(),n.selectionStart=0,n.selectionEnd=e.length;let i [...]
\ No newline at end of file
diff --git a/638581dc.05c618c5.js b/638581dc.05c618c5.js
deleted file mode 100644
index 95ebcd1..0000000
--- a/638581dc.05c618c5.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[21],{118:function(e,t,r){"use strict";r.d(t,"a",(function(){return l})),r.d(t,"b",(function(){return f}));var n=r(0),a=r.n(n);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})) [...]
\ No newline at end of file
diff --git a/812d7c14.8e5096f0.js b/812d7c14.8e5096f0.js
deleted file mode 100644
index e1c1ec2..0000000
--- a/812d7c14.8e5096f0.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[24],{118:function(e,a,t){"use strict";t.d(a,"a",(function(){return d})),t.d(a,"b",(function(){return u}));var n=t(0),i=t.n(n);function r(e,a,t){return a in e?Object.defineProperty(e,a,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[a]=t,e}function s(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);a&&(n=n.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})) [...]
\ No newline at end of file
diff --git a/935f2afb.cf13d7b3.js b/935f2afb.cf13d7b3.js
deleted file mode 100644
index 4e809e4..0000000
--- a/935f2afb.cf13d7b3.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[26],{93:function(e){e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","isLast":true,"docsSidebars":{"docs":[{"collapsed":true,"type":"category","label":"Get Involved","items":[{"type":"link","label":"Security","href":"/security"},{"type":"link","label":"Subscribe Guide","href":"/subscribe-guide"},{"type":"link","label":"Contributor Guide","href":"/contributor-guide"},{"type":"link","label":"Committer Guide" [...]
\ No newline at end of file
diff --git a/98c69322.58eaa6a3.js b/98c69322.58eaa6a3.js
deleted file mode 100644
index a030b4c..0000000
--- a/98c69322.58eaa6a3.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[27],{131:function(e,t,r){"use strict";var n=r(0);function a(){return(a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}function o(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t) [...]
\ No newline at end of file
diff --git a/a6641250.59f84a4a.js b/a6641250.59f84a4a.js
deleted file mode 100644
index b2dc388..0000000
--- a/a6641250.59f84a4a.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[29],{118:function(e,t,r){"use strict";r.d(t,"a",(function(){return f})),r.d(t,"b",(function(){return m}));var n=r(0),o=r.n(n);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})) [...]
\ No newline at end of file
diff --git a/styles.6b3ccb20.css b/assets/css/styles.545fc2a3.css
similarity index 56%
copy from styles.6b3ccb20.css
copy to assets/css/styles.545fc2a3.css
index 5eeaf62..cba029a 100644
--- a/styles.6b3ccb20.css
+++ b/assets/css/styles.545fc2a3.css
@@ -1 +1 @@
-.row .col,img{max-width:100%}.markdown li,body{word-wrap:break-word}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.button,.close{-webkit-appearance:none;cursor:pointer}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button--link,a{-webkit-text-decoration:var(--ifm-link-decoration)}.button,.close,.menu__link,.navbar__link,a{cursor:pointer}.tabs__item,hr,img{box-sizing:content-box}.react-toggle,html{-webkit-tap-hig [...]
\ No newline at end of file
+.row .col,img{max-width:100%}.markdown li,body{word-wrap:break-word}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.button,.close{-webkit-appearance:none;cursor:pointer}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button--link,a{-webkit-text-decoration:var(--ifm-link-decoration)}.button,.close,.menu__link,.navbar__link,a{cursor:pointer}.tabs__item,hr,img{box-sizing:content-box}.react-toggle,html{-webkit-tap-hig [...]
\ No newline at end of file
diff --git a/assets/js/1.b21fad17.js b/assets/js/1.b21fad17.js
new file mode 100644
index 0000000..74d50e6
--- /dev/null
+++ b/assets/js/1.b21fad17.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[1],{126:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(158);Object.defineProperty(t,"useThemeConfig",{enumerable:!0,get:function(){return r.useThemeConfig}});var o=n(185);Object.defineProperty(t,"useAlternatePageUtils",{enumerable:!0,get:function(){return o.useAlternatePageUtils}});var i=n(186);Object.defineProperty(t,"docVersionSearchTag",{enumerable:!0,get:function(){return i.docVersionSearchTag [...]
\ No newline at end of file
diff --git a/12e5767f.eadd535c.js b/assets/js/12e5767f.2a3dfa9d.js
similarity index 95%
rename from 12e5767f.eadd535c.js
rename to assets/js/12e5767f.2a3dfa9d.js
index 9b54c26..ae42051 100644
--- a/12e5767f.eadd535c.js
+++ b/assets/js/12e5767f.2a3dfa9d.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{118:function(e,t,r){"use strict";r.d(t,"a",(function(){return u})),r.d(t,"b",(function(){return f}));var n=r(0),a=r.n(n);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))) [...]
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{125:function(e,t,r){"use strict";r.d(t,"a",(function(){return u})),r.d(t,"b",(function(){return f}));var n=r(0),a=r.n(n);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))) [...]
\ No newline at end of file
diff --git a/17896441.45b06d05.js b/assets/js/17896441.ab569ce4.js
similarity index 68%
copy from 17896441.45b06d05.js
copy to assets/js/17896441.ab569ce4.js
index c56f5e1..07efa83 100644
--- a/17896441.45b06d05.js
+++ b/assets/js/17896441.ab569ce4.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{113:function(e,t,a){"use strict";a.r(t);var n=a(0),l=a.n(n),r=a(24),c=a(119),i=a(22),o=a(124),m=a(121);var s=function(e){var t=e.metadata;return l.a.createElement("nav",{className:"pagination-nav","aria-label":"Blog list page navigation"},l.a.createElement("div",{className:"pagination-nav__item"},t.previous&&l.a.createElement(m.a,{className:"pagination-nav__link",to:t.previous.permalink},l.a.createElement("div",{className:"paginati [...]
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{120:function(e,t,a){"use strict";a.r(t);var n=a(0),l=a.n(n),r=a(24),c=a(126),i=a(17),o=a(132),m=a(128);var s=function(e){var t=e.metadata;return l.a.createElement("nav",{className:"pagination-nav","aria-label":"Blog list page navigation"},l.a.createElement("div",{className:"pagination-nav__item"},t.previous&&l.a.createElement(m.a,{className:"pagination-nav__link",to:t.previous.permalink},l.a.createElement("div",{className:"paginati [...]
\ No newline at end of file
diff --git a/17dc512b.e743caaf.js b/assets/js/17dc512b.570e01fe.js
similarity index 92%
copy from 17dc512b.e743caaf.js
copy to assets/js/17dc512b.570e01fe.js
index 67933a3..21b05f9 100644
--- a/17dc512b.e743caaf.js
+++ b/assets/js/17dc512b.570e01fe.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{118:function(e,t,r){"use strict";r.d(t,"a",(function(){return s})),r.d(t,"b",(function(){return y}));var n=r(0),a=r.n(n);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))) [...]
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{125:function(e,t,r){"use strict";r.d(t,"a",(function(){return s})),r.d(t,"b",(function(){return y}));var n=r(0),a=r.n(n);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))) [...]
\ No newline at end of file
diff --git a/assets/js/1b2ed0ef.fd13d6e7.js b/assets/js/1b2ed0ef.fd13d6e7.js
new file mode 100644
index 0000000..1b863b0
--- /dev/null
+++ b/assets/js/1b2ed0ef.fd13d6e7.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{125:function(e,t,n){"use strict";n.d(t,"a",(function(){return f})),n.d(t,"b",(function(){return m}));var r=n(0),o=n.n(r);function c(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))) [...]
\ No newline at end of file
diff --git a/1be5d2e8.d888a0d3.js b/assets/js/1be5d2e8.0ab794df.js
similarity index 97%
rename from 1be5d2e8.d888a0d3.js
rename to assets/js/1be5d2e8.0ab794df.js
index 1e39cad..12b53d8 100644
--- a/1be5d2e8.d888a0d3.js
+++ b/assets/js/1be5d2e8.0ab794df.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{118:function(e,t,r){"use strict";r.d(t,"a",(function(){return u})),r.d(t,"b",(function(){return h}));var n=r(0),a=r.n(n);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))) [...]
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{125:function(e,t,r){"use strict";r.d(t,"a",(function(){return u})),r.d(t,"b",(function(){return h}));var n=r(0),a=r.n(n);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))) [...]
\ No newline at end of file
diff --git a/assets/js/1be78505.0c1819df.js b/assets/js/1be78505.0c1819df.js
new file mode 100644
index 0000000..3d93535
--- /dev/null
+++ b/assets/js/1be78505.0c1819df.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{121:function(e,a,t){"use strict";t.r(a);var n=t(0),c=t.n(n),i=t(125),l=t(17),r=t(27),o=t(129),s=t(3),u=t(7),b=t(127),d=t(126),m=t(161),p=t(167),f=t(168),v=t(166),h=t(128),E=t(146),O=t(170),j=t(173),k=t(172),C=t(76),_=t.n(C),g=t(169);var N=function e(a,t){return"link"===a.type?Object(d.isSamePath)(a.href,t):"category"===a.type&&a.items.some((function(a){return e(a,t)}))};function I(e){var a,t,i,l=e.item,r=e.onItemClick,o=e.collapsi [...]
\ No newline at end of file
diff --git a/1c89ab3b.16e183e0.js b/assets/js/1c89ab3b.d668bc40.js
similarity index 98%
rename from 1c89ab3b.16e183e0.js
rename to assets/js/1c89ab3b.d668bc40.js
index 204421e..f7f7367 100644
--- a/1c89ab3b.16e183e0.js
+++ b/assets/js/1c89ab3b.d668bc40.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{118:function(e,t,a){"use strict";a.d(t,"a",(function(){return h})),a.d(t,"b",(function(){return m}));var n=a(0),r=a.n(n);function s(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})) [...]
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[11],{125:function(e,t,a){"use strict";a.d(t,"a",(function(){return h})),a.d(t,"b",(function(){return m}));var n=a(0),r=a.n(n);function s(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})) [...]
\ No newline at end of file
diff --git a/assets/js/2.c74b4887.js b/assets/js/2.c74b4887.js
new file mode 100644
index 0000000..732bc1d
--- /dev/null
+++ b/assets/js/2.c74b4887.js
@@ -0,0 +1,2 @@
+/*! For license information please see 2.c74b4887.js.LICENSE.txt */
+(window.webpackJsonp=window.webpackJsonp||[]).push([[2],{129:function(e,t,a){"use strict";var n=a(0),r=a.n(n),c=a(127),o=a(63),l=a.n(o);var i=function(){return r.a.createElement("nav",{"aria-label":"Skip navigation links"},r.a.createElement("button",{type:"button",tabIndex:0,className:l.a.skipToContent,onKeyDown:function(e){if(13===e.keyCode){document.activeElement.blur();var t=document.querySelector("main:first-of-type");t&&t.scrollIntoView()}}},"Skip to main content"))},s=a(126),u=a(16 [...]
\ No newline at end of file
diff --git a/2.05b0df04.js.LICENSE.txt b/assets/js/2.c74b4887.js.LICENSE.txt
similarity index 100%
copy from 2.05b0df04.js.LICENSE.txt
copy to assets/js/2.c74b4887.js.LICENSE.txt
diff --git a/assets/js/25b7c3f2.1e053d90.js b/assets/js/25b7c3f2.1e053d90.js
new file mode 100644
index 0000000..1756f2d
--- /dev/null
+++ b/assets/js/25b7c3f2.1e053d90.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{139:function(e,t,r){"use strict";var n=r(0);function a(){return(a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}function i(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t) [...]
\ No newline at end of file
diff --git a/2d8fe9ee.8a8bd2e1.js b/assets/js/2d8fe9ee.09d7d664.js
similarity index 89%
rename from 2d8fe9ee.8a8bd2e1.js
rename to assets/js/2d8fe9ee.09d7d664.js
index eba141b..451ebda 100644
--- a/2d8fe9ee.8a8bd2e1.js
+++ b/assets/js/2d8fe9ee.09d7d664.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[11],{79:function(e){e.exports=JSON.parse('{"title":"Recent posts","items":[{"title":"Stable Product Delivery with Cypress","permalink":"/blog/2021/02/08/stable-product-delivery-with-cypress"},{"title":"Run Ingress APISIX on Amazon EKS","permalink":"/blog/2021/01/21/run-ingress-apisix-on-amazon-eks"},{"title":"\u521d\u63a2 Kubernetes Service APIs","permalink":"/blog/2020/12/18/a-first-look-at-kubernetes-service-api"},{"title":"Envoy and [...]
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{80:function(e){e.exports=JSON.parse('{"title":"Recent posts","items":[{"title":"Stable Product Delivery with Cypress","permalink":"/blog/2021/02/08/stable-product-delivery-with-cypress"},{"title":"Run Ingress APISIX on Amazon EKS","permalink":"/blog/2021/01/21/run-ingress-apisix-on-amazon-eks"},{"title":"\u521d\u63a2 Kubernetes Service APIs","permalink":"/blog/2020/12/18/a-first-look-at-kubernetes-service-api"},{"title":"Envoy and [...]
\ No newline at end of file
diff --git a/3.538bc209.js b/assets/js/3.e5911a24.js
similarity index 98%
copy from 3.538bc209.js
copy to assets/js/3.e5911a24.js
index c01792f..a39d05b 100644
--- a/3.538bc209.js
+++ b/assets/js/3.e5911a24.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{133:function(e,t,r){"use strict";(function(e){var n=r(26),i=r(0),a=r.n(i),o=r(190),s=r.n(o),c=r(191),l=r(192),u=r(206),h=r(29),f=r.n(h);function d(){return(d=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}var p=function(e,t){for(var r=[e[0]],n=0,i=t.length;n<i;n+=1)r.push(t[n],e[n+1]);return r},g [...]
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{134:function(e,t,r){"use strict";(function(e){var n=r(26),i=r(0),a=r.n(i),o=r(202),s=r.n(o),c=r(203),l=r(204),u=r(218),h=r(29),f=r.n(h);function d(){return(d=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}var p=function(e,t){for(var r=[e[0]],n=0,i=t.length;n<i;n+=1)r.push(t[n],e[n+1]);return r},g [...]
\ No newline at end of file
diff --git a/assets/js/30788500.5be7947f.js b/assets/js/30788500.5be7947f.js
new file mode 100644
index 0000000..15dad04
--- /dev/null
+++ b/assets/js/30788500.5be7947f.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[14],{125:function(e,n,t){"use strict";t.d(n,"a",(function(){return s})),t.d(n,"b",(function(){return m}));var r=t(0),o=t.n(r);function c(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable})) [...]
\ No newline at end of file
diff --git a/37e3b3ea.dca7b1f0.js b/assets/js/37e3b3ea.bccc6220.js
similarity index 93%
copy from 37e3b3ea.dca7b1f0.js
copy to assets/js/37e3b3ea.bccc6220.js
index 956f6ad..12a796c 100644
--- a/37e3b3ea.dca7b1f0.js
+++ b/assets/js/37e3b3ea.bccc6220.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{118:function(e,t,r){"use strict";r.d(t,"a",(function(){return l})),r.d(t,"b",(function(){return m}));var n=r(0),o=r.n(n);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})) [...]
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{125:function(e,t,r){"use strict";r.d(t,"a",(function(){return l})),r.d(t,"b",(function(){return m}));var n=r(0),o=r.n(n);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})) [...]
\ No newline at end of file
diff --git a/assets/js/3dc9f306.7c164520.js b/assets/js/3dc9f306.7c164520.js
new file mode 100644
index 0000000..3df7269
--- /dev/null
+++ b/assets/js/3dc9f306.7c164520.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[16],{125:function(e,t,n){"use strict";n.d(t,"a",(function(){return p})),n.d(t,"b",(function(){return b}));var r=n(0),o=n.n(r);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})) [...]
\ No newline at end of file
diff --git a/4.ce841e81.js b/assets/js/4.f867f6a9.js
similarity index 74%
copy from 4.ce841e81.js
copy to assets/js/4.f867f6a9.js
index f36e1fd..77aa070 100644
--- a/4.ce841e81.js
+++ b/assets/js/4.f867f6a9.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[4],{118:function(e,t,a){"use strict";a.d(t,"a",(function(){return m})),a.d(t,"b",(function(){return d}));var n=a(0),r=a.n(n);function o(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))) [...]
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[4],{125:function(e,t,a){"use strict";a.d(t,"a",(function(){return m})),a.d(t,"b",(function(){return d}));var n=a(0),r=a.n(n);function o(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))) [...]
\ No newline at end of file
diff --git a/41b4926b.4de568af.js b/assets/js/41b4926b.b72ec77b.js
similarity index 97%
rename from 41b4926b.4de568af.js
rename to assets/js/41b4926b.b72ec77b.js
index 7b322b7..d7f9aa3 100644
--- a/41b4926b.4de568af.js
+++ b/assets/js/41b4926b.b72ec77b.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[14],{118:function(e,t,a){"use strict";a.d(t,"a",(function(){return b})),a.d(t,"b",(function(){return m}));var r=a(0),i=a.n(r);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function p(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})) [...]
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[17],{125:function(e,t,a){"use strict";a.d(t,"a",(function(){return b})),a.d(t,"b",(function(){return m}));var r=a(0),i=a.n(r);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function p(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})) [...]
\ No newline at end of file
diff --git a/47e0bf55.6b3fe296.js b/assets/js/47e0bf55.a6c19db6.js
similarity index 98%
rename from 47e0bf55.6b3fe296.js
rename to assets/js/47e0bf55.a6c19db6.js
index 66175e0..7010ee8 100644
--- a/47e0bf55.6b3fe296.js
+++ b/assets/js/47e0bf55.a6c19db6.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{118:function(e,t,n){"use strict";n.d(t,"a",(function(){return p})),n.d(t,"b",(function(){return d}));var a=n(0),r=n.n(a);function s(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})) [...]
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[18],{125:function(e,t,n){"use strict";n.d(t,"a",(function(){return p})),n.d(t,"b",(function(){return d}));var a=n(0),r=n.n(a);function s(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})) [...]
\ No newline at end of file
diff --git a/assets/js/47f8a22a.e97fe1a0.js b/assets/js/47f8a22a.e97fe1a0.js
new file mode 100644
index 0000000..335a316
--- /dev/null
+++ b/assets/js/47f8a22a.e97fe1a0.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[19,33],{137:function(e,t,n){"use strict";const r=(e,{target:t=document.body}={})=>{const n=document.createElement("textarea"),r=document.activeElement;n.value=e,n.setAttribute("readonly",""),n.style.contain="strict",n.style.position="absolute",n.style.left="-9999px",n.style.fontSize="12pt";const a=document.getSelection();let o=!1;a.rangeCount>0&&(o=a.getRangeAt(0)),t.append(n),n.select(),n.selectionStart=0,n.selectionEnd=e.length;let i [...]
\ No newline at end of file
diff --git a/4eed9ed2.27bea7fb.js b/assets/js/4eed9ed2.f6cbdbbf.js
similarity index 96%
rename from 4eed9ed2.27bea7fb.js
rename to assets/js/4eed9ed2.f6cbdbbf.js
index cfc7dd9..a4e7d5e 100644
--- a/4eed9ed2.27bea7fb.js
+++ b/assets/js/4eed9ed2.f6cbdbbf.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[17],{118:function(e,t,r){"use strict";r.d(t,"a",(function(){return u})),r.d(t,"b",(function(){return m}));var a=r(0),n=r.n(a);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})) [...]
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[20],{125:function(e,t,r){"use strict";r.d(t,"a",(function(){return u})),r.d(t,"b",(function(){return m}));var a=r(0),n=r.n(a);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})) [...]
\ No newline at end of file
diff --git a/assets/js/50facf8e.dfead7b3.js b/assets/js/50facf8e.dfead7b3.js
new file mode 100644
index 0000000..db351ad
--- /dev/null
+++ b/assets/js/50facf8e.dfead7b3.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[21],{125:function(e,t,r){"use strict";r.d(t,"a",(function(){return p})),r.d(t,"b",(function(){return d}));var n=r(0),i=r.n(n);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})) [...]
\ No newline at end of file
diff --git a/514de2af.7c1bd42f.js b/assets/js/514de2af.d980fd4f.js
similarity index 98%
rename from 514de2af.7c1bd42f.js
rename to assets/js/514de2af.d980fd4f.js
index 35b4f56..76aec54 100644
--- a/514de2af.7c1bd42f.js
+++ b/assets/js/514de2af.d980fd4f.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[18],{118:function(e,t,a){"use strict";a.d(t,"a",(function(){return h})),a.d(t,"b",(function(){return m}));var n=a(0),r=a.n(n);function s(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})) [...]
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[22],{125:function(e,t,a){"use strict";a.d(t,"a",(function(){return h})),a.d(t,"b",(function(){return m}));var n=a(0),r=a.n(n);function s(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})) [...]
\ No newline at end of file
diff --git a/46.1c9dd603.js b/assets/js/54.b7cce01d.js
similarity index 96%
copy from 46.1c9dd603.js
copy to assets/js/54.b7cce01d.js
index 0cb048a..ebe4aa6 100644
--- a/46.1c9dd603.js
+++ b/assets/js/54.b7cce01d.js
@@ -1,2 +1,2 @@
-/*! For license information please see 46.1c9dd603.js.LICENSE.txt */
-(window.webpackJsonp=window.webpackJsonp||[]).push([[46],{107:function(e,t,n){"use strict";n.r(t);var r=n(0),i=n.n(r),a=n(205),s=n.n(a),c=n(194),u=n.n(c),o=n(120),f=n(24),h=n(121),l=n(10),m=n(119),d=n(22),v=n(122),p=n(153),g=n(123),y=n(108),R=n.n(y);var F=function(e){var t=e.docsSearchVersionsHelpers,n=Object.entries(t.allDocsData).filter((function(e){return e[1].versions.length>1}));return i.a.createElement("div",{className:Object(o.a)("col","col--3","padding-left--none",R.a.searchVersi [...]
\ No newline at end of file
+/*! For license information please see 54.b7cce01d.js.LICENSE.txt */
+(window.webpackJsonp=window.webpackJsonp||[]).push([[54],{114:function(e,t,n){"use strict";n.r(t);var r=n(0),i=n.n(r),a=n(217),s=n.n(a),c=n(206),u=n.n(c),o=n(127),f=n(24),h=n(128),l=n(11),m=n(126),d=n(17),v=n(130),p=n(163),g=n(129),y=n(115),R=n.n(y);var F=function(e){var t=e.docsSearchVersionsHelpers,n=Object.entries(t.allDocsData).filter((function(e){return e[1].versions.length>1}));return i.a.createElement("div",{className:Object(o.a)("col","col--3","padding-left--none",R.a.searchVersi [...]
\ No newline at end of file
diff --git a/46.1c9dd603.js.LICENSE.txt b/assets/js/54.b7cce01d.js.LICENSE.txt
similarity index 100%
copy from 46.1c9dd603.js.LICENSE.txt
copy to assets/js/54.b7cce01d.js.LICENSE.txt
diff --git a/assets/js/55.e6e1e1c1.js b/assets/js/55.e6e1e1c1.js
new file mode 100644
index 0000000..d8ab90c
--- /dev/null
+++ b/assets/js/55.e6e1e1c1.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[55,58],{125:function(e,t,n){"use strict";n.d(t,"a",(function(){return p})),n.d(t,"b",(function(){return f}));var r=n(0),a=n.n(r);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable [...]
\ No newline at end of file
diff --git a/48.cfa52399.js b/assets/js/56.56a582f4.js
similarity index 99%
copy from 48.cfa52399.js
copy to assets/js/56.56a582f4.js
index f4ee5fa..fbd33d3 100644
--- a/48.cfa52399.js
+++ b/assets/js/56.56a582f4.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[48],{213:function(e,t,r){"use strict";function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t,r){var a=t.initialState;return{getState:func [...]
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[56],{225:function(e,t,r){"use strict";function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t,r){var a=t.initialState;return{getState:func [...]
\ No newline at end of file
diff --git a/49.f29e5dd3.js b/assets/js/57.ff9147f8.js
similarity index 62%
copy from 49.f29e5dd3.js
copy to assets/js/57.ff9147f8.js
index b961a7c..e9d92f7 100644
--- a/49.f29e5dd3.js
+++ b/assets/js/57.ff9147f8.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[49],{212:function(n,i,o){"use strict";o.r(i);var r=o(62);for(var t in r)["default"].indexOf(t)<0&&function(n){o.d(i,n,(function(){return r[n]}))}(t)}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[57],{224:function(n,i,o){"use strict";o.r(i);var r=o(62);for(var t in r)["default"].indexOf(t)<0&&function(n){o.d(i,n,(function(){return r[n]}))}(t)}}]);
\ No newline at end of file
diff --git a/574dc000.ed5637a0.js b/assets/js/574dc000.24d7bcfe.js
similarity index 73%
rename from 574dc000.ed5637a0.js
rename to assets/js/574dc000.24d7bcfe.js
index f02ea07..8925cfa 100644
--- a/574dc000.ed5637a0.js
+++ b/assets/js/574dc000.24d7bcfe.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[19],{87:function(e){e.exports=JSON.parse('{"permalink":"/events","page":1,"postsPerPage":10,"totalPages":1,"totalCount":5,"previousPage":null,"nextPage":null,"blogDescription":"Blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[23],{90:function(e){e.exports=JSON.parse('{"permalink":"/events","page":1,"postsPerPage":10,"totalPages":1,"totalCount":5,"previousPage":null,"nextPage":null,"blogDescription":"Blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
diff --git a/50.8a9a9fdc.js b/assets/js/58.79cc1bdb.js
similarity index 76%
copy from 50.8a9a9fdc.js
copy to assets/js/58.79cc1bdb.js
index 5bb8d3c..87abaca 100644
--- a/50.8a9a9fdc.js
+++ b/assets/js/58.79cc1bdb.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[50],{147:function(e,t,a){"use strict";a.r(t);var n=a(0),o=a.n(n),l=a(123);t.default=function(){return o.a.createElement(l.a,{title:"Page Not Found"},o.a.createElement("main",{className:"container margin-vert--xl"},o.a.createElement("div",{className:"row"},o.a.createElement("div",{className:"col col--6 col--offset-3"},o.a.createElement("h1",{className:"hero__title"},"Page Not Found"),o.a.createElement("p",null,"We could not find what yo [...]
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[58],{157:function(e,t,a){"use strict";a.r(t);var n=a(0),o=a.n(n),l=a(129);t.default=function(){return o.a.createElement(l.a,{title:"Page Not Found"},o.a.createElement("main",{className:"container margin-vert--xl"},o.a.createElement("div",{className:"row"},o.a.createElement("div",{className:"col col--6 col--offset-3"},o.a.createElement("h1",{className:"hero__title"},"Page Not Found"),o.a.createElement("p",null,"We could not find what yo [...]
\ No newline at end of file
diff --git a/51.b0dede12.js b/assets/js/59.654079dd.js
similarity index 98%
copy from 51.b0dede12.js
copy to assets/js/59.654079dd.js
index 1fb5777..c83c172 100644
--- a/51.b0dede12.js
+++ b/assets/js/59.654079dd.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[51],{214:function(t,e,n){"use strict";var s=n(3),a=n(7),i=n(4);n(1);function o(t,e){return t.replace(new RegExp("(^|\\s)"+e+"(?:\\s|$)","g"),"$1").replace(/\s+/g," ").replace(/^\s*|\s*$/g,"")}var r=n(0),p=n.n(r),l=n(25),u=n.n(l),c=!1,d=p.a.createContext(null),E="unmounted",f="exited",h="entering",x="entered",m="exiting",v=function(t){function e(e,n){var s;s=t.call(this,e,n)||this;var a,i=n&&!n.isMounting?e.enter:e.appear;return s.appea [...]
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[59],{226:function(t,e,n){"use strict";var s=n(3),a=n(7),i=n(4);n(1);function o(t,e){return t.replace(new RegExp("(^|\\s)"+e+"(?:\\s|$)","g"),"$1").replace(/\s+/g," ").replace(/^\s*|\s*$/g,"")}var r=n(0),p=n.n(r),l=n(25),u=n.n(l),c=!1,d=p.a.createContext(null),E="unmounted",f="exited",h="entering",x="entered",m="exiting",v=function(t){function e(e,n){var s;s=t.call(this,e,n)||this;var a,i=n&&!n.isMounting?e.enter:e.appear;return s.appea [...]
\ No newline at end of file
diff --git a/a4a2cefa.ef2b50c3.js b/assets/js/5bb67ffc.ef54c73b.js
similarity index 99%
rename from a4a2cefa.ef2b50c3.js
rename to assets/js/5bb67ffc.ef54c73b.js
index f8ed460..6feaf2c 100644
--- a/a4a2cefa.ef2b50c3.js
+++ b/assets/js/5bb67ffc.ef54c73b.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[28],{118:function(e,t,r){"use strict";r.d(t,"a",(function(){return u})),r.d(t,"b",(function(){return m}));var a=r(0),n=r.n(a);function b(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})) [...]
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[24],{125:function(e,t,r){"use strict";r.d(t,"a",(function(){return u})),r.d(t,"b",(function(){return m}));var a=r(0),n=r.n(a);function b(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})) [...]
\ No newline at end of file
diff --git a/assets/js/66fbb9c2.048f45e2.js b/assets/js/66fbb9c2.048f45e2.js
new file mode 100644
index 0000000..dac1f6a
--- /dev/null
+++ b/assets/js/66fbb9c2.048f45e2.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[25],{125:function(e,t,r){"use strict";r.d(t,"a",(function(){return l})),r.d(t,"b",(function(){return f}));var n=r(0),a=r.n(n);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})) [...]
\ No newline at end of file
diff --git a/assets/js/6f9b6084.6cf4e9dd.js b/assets/js/6f9b6084.6cf4e9dd.js
new file mode 100644
index 0000000..0fdc423
--- /dev/null
+++ b/assets/js/6f9b6084.6cf4e9dd.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[26],{125:function(e,t,n){"use strict";n.d(t,"a",(function(){return f})),n.d(t,"b",(function(){return b}));var r=n(0),o=n.n(r);function c(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})) [...]
\ No newline at end of file
diff --git a/749ed826.4bd625bf.js b/assets/js/749ed826.dbea5f11.js
similarity index 98%
rename from 749ed826.4bd625bf.js
rename to assets/js/749ed826.dbea5f11.js
index b897648..4f406b1 100644
--- a/749ed826.4bd625bf.js
+++ b/assets/js/749ed826.dbea5f11.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[22],{118:function(e,t,n){"use strict";n.d(t,"a",(function(){return b})),n.d(t,"b",(function(){return m}));var a=n(0),r=n.n(a);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})) [...]
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[27],{125:function(e,t,n){"use strict";n.d(t,"a",(function(){return b})),n.d(t,"b",(function(){return m}));var a=n(0),r=n.n(a);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})) [...]
\ No newline at end of file
diff --git a/assets/js/7af3052c.bcbd3a54.js b/assets/js/7af3052c.bcbd3a54.js
new file mode 100644
index 0000000..3206be9
--- /dev/null
+++ b/assets/js/7af3052c.bcbd3a54.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[28],{125:function(e,a,t){"use strict";t.d(a,"a",(function(){return d})),t.d(a,"b",(function(){return u}));var n=t(0),i=t.n(n);function r(e,a,t){return a in e?Object.defineProperty(e,a,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[a]=t,e}function s(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);a&&(n=n.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})) [...]
\ No newline at end of file
diff --git a/7e37206e.e303dbe6.js b/assets/js/7e37206e.7992680e.js
similarity index 93%
copy from 7e37206e.e303dbe6.js
copy to assets/js/7e37206e.7992680e.js
index ad29f59..9a5568e 100644
--- a/7e37206e.e303dbe6.js
+++ b/assets/js/7e37206e.7992680e.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[23],{140:function(e,t,a){"use strict";var n=a(0);function r(){return(r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n])}return e}).apply(this,arguments)}function i(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},i=Object.keys(e);for(n=0;n<i.length;n++)a=i[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t) [...]
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[29],{150:function(e,t,a){"use strict";var n=a(0);function r(){return(r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n])}return e}).apply(this,arguments)}function i(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},i=Object.keys(e);for(n=0;n<i.length;n++)a=i[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t) [...]
\ No newline at end of file
diff --git a/859cc09f.67740ecc.js b/assets/js/859cc09f.fd7722bd.js
similarity index 96%
copy from 859cc09f.67740ecc.js
copy to assets/js/859cc09f.fd7722bd.js
index 9382b32..6d711f3 100644
--- a/859cc09f.67740ecc.js
+++ b/assets/js/859cc09f.fd7722bd.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[25],{112:function(e,t,r){"use strict";r.r(t);var n=r(0),a=r.n(n),o=r(133),i=r(123),l=r(22),c=r(141);function p(){return(p=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}function m(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++ [...]
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[30],{119:function(e,t,r){"use strict";r.r(t);var n=r(0),a=r.n(n),o=r(134),i=r(129),l=r(17),c=r(151);function p(){return(p=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}function m(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++ [...]
\ No newline at end of file
diff --git a/assets/js/8e784bf3.75bea260.js b/assets/js/8e784bf3.75bea260.js
new file mode 100644
index 0000000..bfaccb7
--- /dev/null
+++ b/assets/js/8e784bf3.75bea260.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[31],{125:function(e,t,n){"use strict";n.d(t,"a",(function(){return m})),n.d(t,"b",(function(){return d}));var o=n(0),r=n.n(o);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})) [...]
\ No newline at end of file
diff --git a/assets/js/935f2afb.66e0e7d2.js b/assets/js/935f2afb.66e0e7d2.js
new file mode 100644
index 0000000..f06b332
--- /dev/null
+++ b/assets/js/935f2afb.66e0e7d2.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[32],{98:function(e){e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","isLast":true,"docsSidebars":{"docs":[{"collapsed":true,"type":"category","label":"General","items":[{"type":"link","label":"Security","href":"/docs/general/security"},{"type":"link","label":"Subscribe Guide","href":"/docs/general/subscribe-guide"},{"type":"link","label":"Contributor Guide","href":"/docs/general/contributor-guide"},{"type [...]
\ No newline at end of file
diff --git a/assets/js/98c69322.3d9a7897.js b/assets/js/98c69322.3d9a7897.js
new file mode 100644
index 0000000..988f021
--- /dev/null
+++ b/assets/js/98c69322.3d9a7897.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[33],{139:function(e,t,r){"use strict";var n=r(0);function a(){return(a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}function i(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t) [...]
\ No newline at end of file
diff --git a/5bb67ffc.3b0eb867.js b/assets/js/a4a2cefa.4d2fd8e2.js
similarity index 99%
rename from 5bb67ffc.3b0eb867.js
rename to assets/js/a4a2cefa.4d2fd8e2.js
index 8d0fb2d..b089b16 100644
--- a/5bb67ffc.3b0eb867.js
+++ b/assets/js/a4a2cefa.4d2fd8e2.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[20],{118:function(e,t,r){"use strict";r.d(t,"a",(function(){return u})),r.d(t,"b",(function(){return m}));var a=r(0),n=r.n(a);function b(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})) [...]
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[34],{125:function(e,t,r){"use strict";r.d(t,"a",(function(){return u})),r.d(t,"b",(function(){return m}));var a=r(0),n=r.n(a);function b(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})) [...]
\ No newline at end of file
diff --git a/assets/js/a6641250.4759241f.js b/assets/js/a6641250.4759241f.js
new file mode 100644
index 0000000..71c9c19
--- /dev/null
+++ b/assets/js/a6641250.4759241f.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[35],{100:function(e,t,r){"use strict";r.r(t),r.d(t,"frontMatter",(function(){return c})),r.d(t,"metadata",(function(){return i})),r.d(t,"toc",(function(){return u})),r.d(t,"default",(function(){return l}));var n=r(3),o=r(7),a=(r(0),r(125)),c={title:"New website for Apache APISIX",author:"juzhiyuan",authorURL:"https://github.com/juzhiyuan",authorImageURL:"https://avatars3.githubusercontent.com/u/2106987?s=460&u=f92e880ce95fe1fee18becd0a [...]
\ No newline at end of file
diff --git a/a6aa9e1f.0a850dbe.js b/assets/js/a6aa9e1f.81639056.js
similarity index 81%
copy from a6aa9e1f.0a850dbe.js
copy to assets/js/a6aa9e1f.81639056.js
index 6b371bd..1f14621 100644
--- a/a6aa9e1f.0a850dbe.js
+++ b/assets/js/a6aa9e1f.81639056.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[30],{115:function(a,e,t){"use strict";t.r(e);var n=t(0),i=t.n(n),l=t(22),r=t(123),c=t(160),m=t(121);var s=function(a){var e=a.metadata,t=e.previousPage,n=e.nextPage;return i.a.createElement("nav",{className:"pagination-nav","aria-label":"Blog list page navigation"},i.a.createElement("div",{className:"pagination-nav__item"},t&&i.a.createElement(m.a,{className:"pagination-nav__link",to:t},i.a.createElement("div",{className:"pagination-na [...]
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[36],{122:function(a,e,t){"use strict";t.r(e);var n=t(0),i=t.n(n),l=t(17),r=t(129),c=t(174),m=t(128);var s=function(a){var e=a.metadata,t=e.previousPage,n=e.nextPage;return i.a.createElement("nav",{className:"pagination-nav","aria-label":"Blog list page navigation"},i.a.createElement("div",{className:"pagination-nav__item"},t&&i.a.createElement(m.a,{className:"pagination-nav__link",to:t},i.a.createElement("div",{className:"pagination-na [...]
\ No newline at end of file
diff --git a/assets/js/adbb350b.d0a4f987.js b/assets/js/adbb350b.d0a4f987.js
new file mode 100644
index 0000000..6e70cb0
--- /dev/null
+++ b/assets/js/adbb350b.d0a4f987.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[37],{103:function(e,t,r){"use strict";r.r(t),r.d(t,"frontMatter",(function(){return i})),r.d(t,"metadata",(function(){return c})),r.d(t,"toc",(function(){return l})),r.d(t,"default",(function(){return b}));var n=r(3),o=r(7),a=(r(0),r(125)),i={id:"contributor-guide",title:"Contributor Guide"},c={unversionedId:"contributor-guide",id:"contributor-guide",isDocsHomePage:!1,title:"Contributor Guide",description:"Please fee free to report bug [...]
\ No newline at end of file
diff --git a/assets/js/b2b675dd.f78e88c7.js b/assets/js/b2b675dd.f78e88c7.js
new file mode 100644
index 0000000..0011a73
--- /dev/null
+++ b/assets/js/b2b675dd.f78e88c7.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[38],{104:function(o){o.exports=JSON.parse('{"permalink":"/blog","page":1,"postsPerPage":10,"totalPages":1,"totalCount":5,"previousPage":null,"nextPage":null,"blogDescription":"Blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
diff --git a/assets/js/b4a67526.6f6704ad.js b/assets/js/b4a67526.6f6704ad.js
new file mode 100644
index 0000000..0faaec2
--- /dev/null
+++ b/assets/js/b4a67526.6f6704ad.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[39],{105:function(o){o.exports=JSON.parse('{"pluginId":"docs-apisix-ingress-controller","version":"current","label":"Next","isLast":true,"docsSidebars":{"docs":[{"collapsed":true,"type":"category","label":"APISIX\u2122\ufe0f Ingress Controller","items":[{"type":"link","label":"Introduction","href":"/docs/ingress-controller/introduction"}]}]},"permalinkToSidebar":{"/docs/ingress-controller/introduction":"docs"}}')}}]);
\ No newline at end of file
diff --git a/assets/js/bacea567.58c33be1.js b/assets/js/bacea567.58c33be1.js
new file mode 100644
index 0000000..5764aaa
--- /dev/null
+++ b/assets/js/bacea567.58c33be1.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[40],{106:function(e,t,r){"use strict";r.r(t),r.d(t,"frontMatter",(function(){return c})),r.d(t,"metadata",(function(){return i})),r.d(t,"toc",(function(){return s})),r.d(t,"default",(function(){return l}));var n=r(3),a=r(7),o=(r(0),r(125)),c={title:"Release Apache APISIX Dashboard 2.4"},i={permalink:"/events/2021/02/12/release-apache-apisix-dashboard-2.4",source:"@site/events/2021-02-12-release-apache-apisix-dashboard-2.4.md",descripti [...]
\ No newline at end of file
diff --git a/c119cf3c.3ae89b6e.js b/assets/js/c119cf3c.a240434d.js
similarity index 92%
rename from c119cf3c.3ae89b6e.js
rename to assets/js/c119cf3c.a240434d.js
index e4be0ed..69175bf 100644
--- a/c119cf3c.3ae89b6e.js
+++ b/assets/js/c119cf3c.a240434d.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[33],{100:function(e,r,t){"use strict";t.r(r),t.d(r,"frontMatter",(function(){return c})),t.d(r,"metadata",(function(){return i})),t.d(r,"toc",(function(){return s})),t.d(r,"default",(function(){return l}));var n=t(3),a=t(7),o=(t(0),t(118)),c={title:"Release Apache APISIX Ingress Controller 0.3.0"},i={permalink:"/events/2021/02/11/release-apache-apisix-ingress-controller-0.3.0",source:"@site/events/2021-02-11-release-apache-apisix-ingre [...]
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[41],{107:function(e,r,t){"use strict";t.r(r),t.d(r,"frontMatter",(function(){return c})),t.d(r,"metadata",(function(){return i})),t.d(r,"toc",(function(){return s})),t.d(r,"default",(function(){return l}));var n=t(3),a=t(7),o=(t(0),t(125)),c={title:"Release Apache APISIX Ingress Controller 0.3.0"},i={permalink:"/events/2021/02/11/release-apache-apisix-ingress-controller-0.3.0",source:"@site/events/2021-02-11-release-apache-apisix-ingre [...]
\ No newline at end of file
diff --git a/c4f5d8e4.4c497370.js b/assets/js/c4f5d8e4.a4d61c1b.js
similarity index 96%
copy from c4f5d8e4.4c497370.js
copy to assets/js/c4f5d8e4.a4d61c1b.js
index a206718..e3c839f 100644
--- a/c4f5d8e4.4c497370.js
+++ b/assets/js/c4f5d8e4.a4d61c1b.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[34],{101:function(e,t,a){"use strict";a.r(t);var n=a(121),l=a(22),r=a(124),c=a(123),i=a(141),s=a(0),o=a(214),m=a(140),u=a(0),d=function(){var e=Object(s.useState)(0),t=e[0],a=e[1],l=["Dynamic","Real-Time","High-Performance"],c=Object(s.useState)(!0),m=c[0],d=c[1],v=function(e){d(!1),a(e),d(!0)};return Object(s.useEffect)((function(){var e=setInterval((function(){v(t>=l.length-1?0:t+1)}),3600);return function(){return clearInterval(e)}} [...]
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[42],{108:function(e,t,a){"use strict";a.r(t);var n=a(128),l=a(17),r=a(132),c=a(129),i=a(151),s=a(0),o=a(226),m=a(150),u=a(0),d=function(){var e=Object(s.useState)(0),t=e[0],a=e[1],l=["Dynamic","Real-Time","High-Performance"],c=Object(s.useState)(!0),m=c[0],d=c[1],v=function(e){d(!1),a(e),d(!0)};return Object(s.useEffect)((function(){var e=setInterval((function(){v(t>=l.length-1?0:t+1)}),3600);return function(){return clearInterval(e)}} [...]
\ No newline at end of file
diff --git a/c5594f1a.37e99f35.js b/assets/js/c5594f1a.b73b27b8.js
similarity index 94%
rename from c5594f1a.37e99f35.js
rename to assets/js/c5594f1a.b73b27b8.js
index b167d79..a934232 100644
--- a/c5594f1a.37e99f35.js
+++ b/assets/js/c5594f1a.b73b27b8.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[35],{102:function(e,r,t){"use strict";t.r(r),t.d(r,"frontMatter",(function(){return c})),t.d(r,"metadata",(function(){return i})),t.d(r,"toc",(function(){return s})),t.d(r,"default",(function(){return p}));var n=t(3),a=t(7),o=(t(0),t(118)),c={title:"Release Apache APISIX Ingress Controller 0.2.0"},i={permalink:"/events/2021/01/19/release-apache-apisix-ingress-controller-0.2.0",source:"@site/events/2021-01-19-release-apache-apisix-ingre [...]
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[43],{109:function(e,r,t){"use strict";t.r(r),t.d(r,"frontMatter",(function(){return c})),t.d(r,"metadata",(function(){return i})),t.d(r,"toc",(function(){return s})),t.d(r,"default",(function(){return p}));var n=t(3),a=t(7),o=(t(0),t(125)),c={title:"Release Apache APISIX Ingress Controller 0.2.0"},i={permalink:"/events/2021/01/19/release-apache-apisix-ingress-controller-0.2.0",source:"@site/events/2021-01-19-release-apache-apisix-ingre [...]
\ No newline at end of file
diff --git a/assets/js/ccc49370.938f9db4.js b/assets/js/ccc49370.938f9db4.js
new file mode 100644
index 0000000..5efdd10
--- /dev/null
+++ b/assets/js/ccc49370.938f9db4.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[44],{123:function(e,t,a){"use strict";a.r(t);var n=a(0),l=a.n(n),r=a(129),i=a(174),c=a(128);var o=function(e){var t=e.nextItem,a=e.prevItem;return l.a.createElement("nav",{className:"pagination-nav","aria-label":"Blog post page navigation"},l.a.createElement("div",{className:"pagination-nav__item"},a&&l.a.createElement(c.a,{className:"pagination-nav__link",to:a.permalink},l.a.createElement("div",{className:"pagination-nav__sublabel"}," [...]
\ No newline at end of file
diff --git a/d4de91ec.5a26bbda.js b/assets/js/d4de91ec.5615c552.js
similarity index 97%
rename from d4de91ec.5a26bbda.js
rename to assets/js/d4de91ec.5615c552.js
index fb15b0a..dddb365 100644
--- a/d4de91ec.5a26bbda.js
+++ b/assets/js/d4de91ec.5615c552.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[37],{103:function(e,t,a){"use strict";a.r(t),a.d(t,"frontMatter",(function(){return p})),a.d(t,"metadata",(function(){return c})),a.d(t,"toc",(function(){return l})),a.d(t,"default",(function(){return b}));var r=a(3),i=a(7),n=(a(0),a(118)),p={title:"Release Apache APISIX Dashboard 2.4"},c={permalink:"/events/2021/02/12/release-apache-apisix-dashboard-2.4",source:"@site/events/2021-02-12-release-apache-apisix-dashboard-2.4.md",descripti [...]
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[45],{110:function(e,t,a){"use strict";a.r(t),a.d(t,"frontMatter",(function(){return p})),a.d(t,"metadata",(function(){return c})),a.d(t,"toc",(function(){return l})),a.d(t,"default",(function(){return b}));var r=a(3),i=a(7),n=(a(0),a(125)),p={title:"Release Apache APISIX Dashboard 2.4"},c={permalink:"/events/2021/02/12/release-apache-apisix-dashboard-2.4",source:"@site/events/2021-02-12-release-apache-apisix-dashboard-2.4.md",descripti [...]
\ No newline at end of file
diff --git a/assets/js/d73fca9b.100c8f68.js b/assets/js/d73fca9b.100c8f68.js
new file mode 100644
index 0000000..86efa1c
--- /dev/null
+++ b/assets/js/d73fca9b.100c8f68.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[46],{111:function(i){i.exports=JSON.parse('{"pluginId":"docs-apisix","version":"current","label":"Next","isLast":true,"docsSidebars":{"docs":[{"collapsed":true,"type":"category","label":"APISIX\u2122\ufe0f","items":[{"type":"link","label":"Introduction","href":"/docs/apisix/introduction"}]}]},"permalinkToSidebar":{"/docs/apisix/introduction":"docs"}}')}}]);
\ No newline at end of file
diff --git a/e02da2c5.ce8c61f7.js b/assets/js/e02da2c5.d84d16c5.js
similarity index 98%
rename from e02da2c5.ce8c61f7.js
rename to assets/js/e02da2c5.d84d16c5.js
index 1f9eb1d..f2624c5 100644
--- a/e02da2c5.ce8c61f7.js
+++ b/assets/js/e02da2c5.d84d16c5.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[39],{105:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return o})),n.d(t,"metadata",(function(){return l})),n.d(t,"toc",(function(){return c})),n.d(t,"default",(function(){return s}));var a=n(3),r=n(7),i=(n(0),n(118)),o={title:"Envoy and Apache APISIX: Another way to implement the Envoy filter",author:"nic-chen",authorURL:"https://github.com/nic-chen",authorImageURL:"https://avatars0.githubusercontent.com/u/330006 [...]
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[47],{112:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return o})),n.d(t,"metadata",(function(){return l})),n.d(t,"toc",(function(){return c})),n.d(t,"default",(function(){return s}));var a=n(3),r=n(7),i=(n(0),n(125)),o={title:"Envoy and Apache APISIX: Another way to implement the Envoy filter",author:"nic-chen",authorURL:"https://github.com/nic-chen",authorImageURL:"https://avatars0.githubusercontent.com/u/330006 [...]
\ No newline at end of file
diff --git a/e451ae2c.5f322c75.js b/assets/js/e451ae2c.162a757f.js
similarity index 98%
rename from e451ae2c.5f322c75.js
rename to assets/js/e451ae2c.162a757f.js
index 209859c..8bb186b 100644
--- a/e451ae2c.5f322c75.js
+++ b/assets/js/e451ae2c.162a757f.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[40],{106:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return o})),n.d(t,"metadata",(function(){return i})),n.d(t,"toc",(function(){return c})),n.d(t,"default",(function(){return u}));var a=n(3),r=n(7),s=(n(0),n(118)),o={title:"Stable Product Delivery with Cypress",author:"Yi Sun",authorURL:"https://github.com/LiteSun",authorImageURL:"https://avatars.githubusercontent.com/u/31329157?s=400&u=e81b4bb4db2be162c1fcac6 [...]
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[48],{113:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return o})),n.d(t,"metadata",(function(){return i})),n.d(t,"toc",(function(){return c})),n.d(t,"default",(function(){return u}));var a=n(3),r=n(7),s=(n(0),n(125)),o={title:"Stable Product Delivery with Cypress",author:"Yi Sun",authorURL:"https://github.com/LiteSun",authorImageURL:"https://avatars.githubusercontent.com/u/31329157?s=400&u=e81b4bb4db2be162c1fcac6 [...]
\ No newline at end of file
diff --git a/assets/js/f243156b.1561d1a4.js b/assets/js/f243156b.1561d1a4.js
new file mode 100644
index 0000000..ef79b99
--- /dev/null
+++ b/assets/js/f243156b.1561d1a4.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[49],{116:function(o){o.exports=JSON.parse('{"pluginId":"docs-apisix-dashboard","version":"current","label":"Next","isLast":true,"docsSidebars":{"docs":[{"collapsed":true,"type":"category","label":"APISIX\u2122\ufe0f Dashboard","items":[{"type":"link","label":"Introduction","href":"/docs/dashboard/introduction"}]}]},"permalinkToSidebar":{"/docs/dashboard/introduction":"docs"}}')}}]);
\ No newline at end of file
diff --git a/f7488fe8.07e79c17.js b/assets/js/f7488fe8.e624b827.js
similarity index 91%
rename from f7488fe8.07e79c17.js
rename to assets/js/f7488fe8.e624b827.js
index 5bdb8c9..bbce843 100644
--- a/f7488fe8.07e79c17.js
+++ b/assets/js/f7488fe8.e624b827.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[41],{109:function(e){e.exports=JSON.parse('{"title":"Recent posts","items":[{"title":"Release Apache APISIX Dashboard 2.4","permalink":"/events/2021/02/12/release-apache-apisix-dashboard-2.4"},{"title":"Release Apache APISIX Ingress Controller 0.3.0","permalink":"/events/2021/02/11/release-apache-apisix-ingress-controller-0.3.0"},{"title":"Release Apache APISIX 2.3","permalink":"/events/2021/02/09/release-apache-apisix-2.3"},{"title":" [...]
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[50],{117:function(e){e.exports=JSON.parse('{"title":"Recent posts","items":[{"title":"Release Apache APISIX Dashboard 2.4","permalink":"/events/2021/02/12/release-apache-apisix-dashboard-2.4"},{"title":"Release Apache APISIX Ingress Controller 0.3.0","permalink":"/events/2021/02/11/release-apache-apisix-ingress-controller-0.3.0"},{"title":"Release Apache APISIX 2.3","permalink":"/events/2021/02/09/release-apache-apisix-2.3"},{"title":" [...]
\ No newline at end of file
diff --git a/fa919c95.608202b3.js b/assets/js/fa919c95.8686a53b.js
similarity index 93%
rename from fa919c95.608202b3.js
rename to assets/js/fa919c95.8686a53b.js
index 22077ab..2ee16e4 100644
--- a/fa919c95.608202b3.js
+++ b/assets/js/fa919c95.8686a53b.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[42],{110:function(e,r,t){"use strict";t.r(r),t.d(r,"frontMatter",(function(){return c})),t.d(r,"metadata",(function(){return i})),t.d(r,"toc",(function(){return s})),t.d(r,"default",(function(){return p}));var n=t(3),a=t(7),o=(t(0),t(118)),c={title:"Release Apache APISIX Ingress Controller 0.1.0"},i={permalink:"/events/2020/12/23/release-apache-apisix-ingress-controller-0.1.0",source:"@site/events/2020-12-23-release-apache-apisix-ingre [...]
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[51],{118:function(e,r,t){"use strict";t.r(r),t.d(r,"frontMatter",(function(){return c})),t.d(r,"metadata",(function(){return i})),t.d(r,"toc",(function(){return s})),t.d(r,"default",(function(){return p}));var n=t(3),a=t(7),o=(t(0),t(125)),c={title:"Release Apache APISIX Ingress Controller 0.1.0"},i={permalink:"/events/2020/12/23/release-apache-apisix-ingress-controller-0.1.0",source:"@site/events/2020-12-23-release-apache-apisix-ingre [...]
\ No newline at end of file
diff --git a/assets/js/main.e86f8eb4.js b/assets/js/main.e86f8eb4.js
new file mode 100644
index 0000000..99adc8d
--- /dev/null
+++ b/assets/js/main.e86f8eb4.js
@@ -0,0 +1,2 @@
+/*! For license information please see main.e86f8eb4.js.LICENSE.txt */
+(window.webpackJsonp=window.webpackJsonp||[]).push([[52],[function(e,t,n){"use strict";e.exports=n(38)},function(e,t,n){e.exports=n(42)()},function(e,t,n){"use strict";n.d(t,"a",(function(){return v})),n.d(t,"b",(function(){return w})),n.d(t,"c",(function(){return S})),n.d(t,"d",(function(){return A})),n.d(t,"e",(function(){return b})),n.d(t,"f",(function(){return L})),n.d(t,"g",(function(){return j})),n.d(t,"h",(function(){return g})),n.d(t,"i",(function(){return x})),n.d(t,"j",(functio [...]
\ No newline at end of file
diff --git a/main.be0eaecb.js.LICENSE.txt b/assets/js/main.e86f8eb4.js.LICENSE.txt
similarity index 100%
copy from main.be0eaecb.js.LICENSE.txt
copy to assets/js/main.e86f8eb4.js.LICENSE.txt
diff --git a/assets/js/runtime~main.1cc43786.js b/assets/js/runtime~main.1cc43786.js
new file mode 100644
index 0000000..192d377
--- /dev/null
+++ b/assets/js/runtime~main.1cc43786.js
@@ -0,0 +1 @@
+!function(e){function f(f){for(var a,d,b=f[0],n=f[1],o=f[2],u=0,l=[];u<b.length;u++)d=b[u],Object.prototype.hasOwnProperty.call(r,d)&&r[d]&&l.push(r[d][0]),r[d]=0;for(a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a]);for(i&&i(f);l.length;)l.shift()();return t.push.apply(t,o||[]),c()}function c(){for(var e,f=0;f<t.length;f++){for(var c=t[f],a=!0,d=1;d<c.length;d++){var n=c[d];0!==r[n]&&(a=!1)}a&&(t.splice(f--,1),e=b(b.s=c[0]))}return e}var a={},r={53:0},t=[];function d(e){retu [...]
\ No newline at end of file
diff --git a/assets/js/styles.69143f42.js b/assets/js/styles.69143f42.js
new file mode 100644
index 0000000..7c6d562
--- /dev/null
+++ b/assets/js/styles.69143f42.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[0],{101:function(e,o,n){e.exports={blogPostTitle:"blogPostTitle_GeHD",blogPostDate:"blogPostDate_fNvV"}},102:function(e,o,n){e.exports={sidebar:"sidebar_2ahu",sidebarItemTitle:"sidebarItemTitle_2hhb",sidebarItemList:"sidebarItemList_2xAf",sidebarItem:"sidebarItem_2UVv",sidebarItemLink:"sidebarItemLink_1RT6",sidebarItemLinkActive:"sidebarItemLinkActive_12pM"}},115:function(e,o,n){e.exports={searchQueryInput:"searchQueryInput_35WP",searc [...]
\ No newline at end of file
diff --git a/b2b675dd.24401601.js b/b2b675dd.24401601.js
deleted file mode 100644
index 85a0a6d..0000000
--- a/b2b675dd.24401601.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[31],{98:function(o){o.exports=JSON.parse('{"permalink":"/blog","page":1,"postsPerPage":10,"totalPages":1,"totalCount":5,"previousPage":null,"nextPage":null,"blogDescription":"Blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
diff --git a/bacea567.b9d05017.js b/bacea567.b9d05017.js
deleted file mode 100644
index 5b058a5..0000000
--- a/bacea567.b9d05017.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[32],{118:function(e,t,r){"use strict";r.d(t,"a",(function(){return u})),r.d(t,"b",(function(){return d}));var n=r(0),a=r.n(n);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})) [...]
\ No newline at end of file
diff --git a/blog/2020/08/22/new-website/index.html b/blog/2020/08/22/new-website/index.html
index 7c62f40..2c12211 100644
--- a/blog/2020/08/22/new-website/index.html
+++ b/blog/2020/08/22/new-website/index.html
@@ -3,34 +3,34 @@
 <head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-alpha.70">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
 <link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/opensearch.xml">
 <link rel="alternate" type="application/rss+xml" href="/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">New website for Apache APISIX | Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="New website for Apache APISIX | Apache APISIX™"><meta data-react-helmet="true" property="og:description" content="We are just refactored out website for Apache APISIX by using docusaurus."><meta data-react-helmet="true" name="t [...]
-<link rel="preload" href="/styles.f6196f2d.js" as="script">
-<link rel="preload" href="/runtime~main.dfaa07c6.js" as="script">
-<link rel="preload" href="/main.be0eaecb.js" as="script">
-<link rel="preload" href="/1.b3395235.js" as="script">
-<link rel="preload" href="/2.05b0df04.js" as="script">
-<link rel="preload" href="/4.ce841e81.js" as="script">
-<link rel="preload" href="/ccc49370.5f3fc8be.js" as="script">
-<link rel="preload" href="/2d8fe9ee.8a8bd2e1.js" as="script">
-<link rel="preload" href="/a6641250.59f84a4a.js" as="script">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">New website for Apache APISIX | Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="New website for Apache APISIX | Apache APISIX™"><meta data-react-helmet="true" property="og:description" content="We are just refactored out website for Apache APISIX by using docusaurus."><meta data-react-helmet="true" name="t [...]
+<link rel="preload" href="/assets/js/styles.69143f42.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.1cc43786.js" as="script">
+<link rel="preload" href="/assets/js/main.e86f8eb4.js" as="script">
+<link rel="preload" href="/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/assets/js/4.f867f6a9.js" as="script">
+<link rel="preload" href="/assets/js/ccc49370.938f9db4.js" as="script">
+<link rel="preload" href="/assets/js/2d8fe9ee.09d7d664.js" as="script">
+<link rel="preload" href="/assets/js/a6641250.4759241f.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
-<script src="/styles.f6196f2d.js"></script>
-<script src="/runtime~main.dfaa07c6.js"></script>
-<script src="/main.be0eaecb.js"></script>
-<script src="/1.b3395235.js"></script>
-<script src="/2.05b0df04.js"></script>
-<script src="/4.ce841e81.js"></script>
-<script src="/ccc49370.5f3fc8be.js"></script>
-<script src="/2d8fe9ee.8a8bd2e1.js"></script>
-<script src="/a6641250.59f84a4a.js"></script>
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+<script src="/assets/js/styles.69143f42.js"></script>
+<script src="/assets/js/runtime~main.1cc43786.js"></script>
+<script src="/assets/js/main.e86f8eb4.js"></script>
+<script src="/assets/js/1.b21fad17.js"></script>
+<script src="/assets/js/2.c74b4887.js"></script>
+<script src="/assets/js/4.f867f6a9.js"></script>
+<script src="/assets/js/ccc49370.938f9db4.js"></script>
+<script src="/assets/js/2d8fe9ee.09d7d664.js"></script>
+<script src="/assets/js/a6641250.4759241f.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/2020/12/16/another-way-to-implement-envoy-filter/index.html b/blog/2020/12/16/another-way-to-implement-envoy-filter/index.html
index 103a657..c4db8e6 100644
--- a/blog/2020/12/16/another-way-to-implement-envoy-filter/index.html
+++ b/blog/2020/12/16/another-way-to-implement-envoy-filter/index.html
@@ -3,36 +3,36 @@
 <head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-alpha.70">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
 <link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/opensearch.xml">
 <link rel="alternate" type="application/rss+xml" href="/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Envoy and Apache APISIX: Another way to implement the Envoy filter | Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Envoy and Apache APISIX: Another way to implement the Envoy filter | Apache APISIX™"><meta data-react-helmet="true" property="og:description" content="@nic-chen, Apache APISIX PMC from Shenz [...]
-<link rel="preload" href="/styles.f6196f2d.js" as="script">
-<link rel="preload" href="/runtime~main.dfaa07c6.js" as="script">
-<link rel="preload" href="/main.be0eaecb.js" as="script">
-<link rel="preload" href="/1.b3395235.js" as="script">
-<link rel="preload" href="/2.05b0df04.js" as="script">
-<link rel="preload" href="/4.ce841e81.js" as="script">
-<link rel="preload" href="/ccc49370.5f3fc8be.js" as="script">
-<link rel="preload" href="/2d8fe9ee.8a8bd2e1.js" as="script">
-<link rel="preload" href="/749ed826.4bd625bf.js" as="script">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Envoy and Apache APISIX: Another way to implement the Envoy filter | Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Envoy and Apache APISIX: Another way to implement the Envoy filter | Apache APISIX™"><meta data-react-helmet="true" property="og:description" content="@nic-chen, Apache APISIX PMC from Shenz [...]
+<link rel="preload" href="/assets/js/styles.69143f42.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.1cc43786.js" as="script">
+<link rel="preload" href="/assets/js/main.e86f8eb4.js" as="script">
+<link rel="preload" href="/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/assets/js/4.f867f6a9.js" as="script">
+<link rel="preload" href="/assets/js/ccc49370.938f9db4.js" as="script">
+<link rel="preload" href="/assets/js/2d8fe9ee.09d7d664.js" as="script">
+<link rel="preload" href="/assets/js/749ed826.dbea5f11.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
-A pluggable filter chain mechanism allows filters to be written to perform different tasks and inserted into the main server.</p><p><img src="https://static.apiseven.com/filters.png" alt="Envoy filter"></p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="expansion-method"></a>Expansion method<a class="hash-link" href="#expansion-method" title="Direct link to heading">#</a></h3><p>The existing filters may not meet the user&#x27;s custom requirements. In this  [...]
-In the example, we configured plugin <code>uri-blocker</code> for the route whose prefix is ​​<code>/foo</code>, as well as the block rule of the plugin and the response status when a block is required.</p><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="second-step-parse-request"></a>Second step, parse request<a class="hash-link" href="#second-step-parse-request" title="Direct link to heading">#</a></h4><p>We encapsulated the client request data into <code> [...]
-<script src="/styles.f6196f2d.js"></script>
-<script src="/runtime~main.dfaa07c6.js"></script>
-<script src="/main.be0eaecb.js"></script>
-<script src="/1.b3395235.js"></script>
-<script src="/2.05b0df04.js"></script>
-<script src="/4.ce841e81.js"></script>
-<script src="/ccc49370.5f3fc8be.js"></script>
-<script src="/2d8fe9ee.8a8bd2e1.js"></script>
-<script src="/749ed826.4bd625bf.js"></script>
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+A pluggable filter chain mechanism allows filters to be written to perform different tasks and inserted into the main server.</p><p><img src="https://static.apiseven.com/filters.png" alt="Envoy filter"></p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_2LWZ" id="expansion-method"></a>Expansion method<a class="hash-link" href="#expansion-method" title="Direct link to heading">#</a></h3><p>The existing filters may not meet the user&#x27;s custom requirements. In this  [...]
+In the example, we configured plugin <code>uri-blocker</code> for the route whose prefix is ​​<code>/foo</code>, as well as the block rule of the plugin and the response status when a block is required.</p><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_2LWZ" id="second-step-parse-request"></a>Second step, parse request<a class="hash-link" href="#second-step-parse-request" title="Direct link to heading">#</a></h4><p>We encapsulated the client request data into <code> [...]
+<script src="/assets/js/styles.69143f42.js"></script>
+<script src="/assets/js/runtime~main.1cc43786.js"></script>
+<script src="/assets/js/main.e86f8eb4.js"></script>
+<script src="/assets/js/1.b21fad17.js"></script>
+<script src="/assets/js/2.c74b4887.js"></script>
+<script src="/assets/js/4.f867f6a9.js"></script>
+<script src="/assets/js/ccc49370.938f9db4.js"></script>
+<script src="/assets/js/2d8fe9ee.09d7d664.js"></script>
+<script src="/assets/js/749ed826.dbea5f11.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/2020/12/18/a-first-look-at-kubernetes-service-api/index.html b/blog/2020/12/18/a-first-look-at-kubernetes-service-api/index.html
index 30b1069..31541d2 100644
--- a/blog/2020/12/18/a-first-look-at-kubernetes-service-api/index.html
+++ b/blog/2020/12/18/a-first-look-at-kubernetes-service-api/index.html
@@ -3,34 +3,34 @@
 <head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-alpha.70">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
 <link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/opensearch.xml">
 <link rel="alternate" type="application/rss+xml" href="/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">初探 Kubernetes Service APIs | Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="初探 Kubernetes Service APIs | Apache APISIX™"><meta data-react-helmet="true" property="og:description" content="@gxthrj, Apache APISIX PMC &amp; Apache apisix-ingress-controller Founder from Shenzhen Zhiliu Technology Co."><meta da [...]
-<link rel="preload" href="/styles.f6196f2d.js" as="script">
-<link rel="preload" href="/runtime~main.dfaa07c6.js" as="script">
-<link rel="preload" href="/main.be0eaecb.js" as="script">
-<link rel="preload" href="/1.b3395235.js" as="script">
-<link rel="preload" href="/2.05b0df04.js" as="script">
-<link rel="preload" href="/4.ce841e81.js" as="script">
-<link rel="preload" href="/ccc49370.5f3fc8be.js" as="script">
-<link rel="preload" href="/2d8fe9ee.8a8bd2e1.js" as="script">
-<link rel="preload" href="/a4a2cefa.ef2b50c3.js" as="script">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">初探 Kubernetes Service APIs | Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="初探 Kubernetes Service APIs | Apache APISIX™"><meta data-react-helmet="true" property="og:description" content="@gxthrj, Apache APISIX PMC &amp; Apache apisix-ingress-controller Founder from Shenzhen Zhiliu Technology Co."><meta da [...]
+<link rel="preload" href="/assets/js/styles.69143f42.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.1cc43786.js" as="script">
+<link rel="preload" href="/assets/js/main.e86f8eb4.js" as="script">
+<link rel="preload" href="/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/assets/js/4.f867f6a9.js" as="script">
+<link rel="preload" href="/assets/js/ccc49370.938f9db4.js" as="script">
+<link rel="preload" href="/assets/js/2d8fe9ee.09d7d664.js" as="script">
+<link rel="preload" href="/assets/js/a4a2cefa.4d2fd8e2.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
-<script src="/styles.f6196f2d.js"></script>
-<script src="/runtime~main.dfaa07c6.js"></script>
-<script src="/main.be0eaecb.js"></script>
-<script src="/1.b3395235.js"></script>
-<script src="/2.05b0df04.js"></script>
-<script src="/4.ce841e81.js"></script>
-<script src="/ccc49370.5f3fc8be.js"></script>
-<script src="/2d8fe9ee.8a8bd2e1.js"></script>
-<script src="/a4a2cefa.ef2b50c3.js"></script>
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+<script src="/assets/js/styles.69143f42.js"></script>
+<script src="/assets/js/runtime~main.1cc43786.js"></script>
+<script src="/assets/js/main.e86f8eb4.js"></script>
+<script src="/assets/js/1.b21fad17.js"></script>
+<script src="/assets/js/2.c74b4887.js"></script>
+<script src="/assets/js/4.f867f6a9.js"></script>
+<script src="/assets/js/ccc49370.938f9db4.js"></script>
+<script src="/assets/js/2d8fe9ee.09d7d664.js"></script>
+<script src="/assets/js/a4a2cefa.4d2fd8e2.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/2021/01/21/run-ingress-apisix-on-amazon-eks/index.html b/blog/2021/01/21/run-ingress-apisix-on-amazon-eks/index.html
index 1ed138a..e7353c5 100644
--- a/blog/2021/01/21/run-ingress-apisix-on-amazon-eks/index.html
+++ b/blog/2021/01/21/run-ingress-apisix-on-amazon-eks/index.html
@@ -3,35 +3,35 @@
 <head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-alpha.70">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
 <link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/opensearch.xml">
 <link rel="alternate" type="application/rss+xml" href="/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Run Ingress APISIX on Amazon EKS | Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Run Ingress APISIX on Amazon EKS | Apache APISIX™"><meta data-react-helmet="true" property="og:description" content="@Chao Zhang, Apache APISIX Comitter from Shenzhen Zhiliu Technology Co."><meta data-react-helmet="true" nam [...]
-<link rel="preload" href="/styles.f6196f2d.js" as="script">
-<link rel="preload" href="/runtime~main.dfaa07c6.js" as="script">
-<link rel="preload" href="/main.be0eaecb.js" as="script">
-<link rel="preload" href="/1.b3395235.js" as="script">
-<link rel="preload" href="/2.05b0df04.js" as="script">
-<link rel="preload" href="/4.ce841e81.js" as="script">
-<link rel="preload" href="/ccc49370.5f3fc8be.js" as="script">
-<link rel="preload" href="/2d8fe9ee.8a8bd2e1.js" as="script">
-<link rel="preload" href="/1c89ab3b.16e183e0.js" as="script">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Run Ingress APISIX on Amazon EKS | Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Run Ingress APISIX on Amazon EKS | Apache APISIX™"><meta data-react-helmet="true" property="og:description" content="@Chao Zhang, Apache APISIX Comitter from Shenzhen Zhiliu Technology Co."><meta data-react-helmet="true" nam [...]
+<link rel="preload" href="/assets/js/styles.69143f42.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.1cc43786.js" as="script">
+<link rel="preload" href="/assets/js/main.e86f8eb4.js" as="script">
+<link rel="preload" href="/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/assets/js/4.f867f6a9.js" as="script">
+<link rel="preload" href="/assets/js/ccc49370.938f9db4.js" as="script">
+<link rel="preload" href="/assets/js/2d8fe9ee.09d7d664.js" as="script">
+<link rel="preload" href="/assets/js/1c89ab3b.d668bc40.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;headers&quot;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> </span><span c [...]
-<script src="/styles.f6196f2d.js"></script>
-<script src="/runtime~main.dfaa07c6.js"></script>
-<script src="/main.be0eaecb.js"></script>
-<script src="/1.b3395235.js"></script>
-<script src="/2.05b0df04.js"></script>
-<script src="/4.ce841e81.js"></script>
-<script src="/ccc49370.5f3fc8be.js"></script>
-<script src="/2d8fe9ee.8a8bd2e1.js"></script>
-<script src="/1c89ab3b.16e183e0.js"></script>
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;headers&quot;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> </span><span c [...]
+<script src="/assets/js/styles.69143f42.js"></script>
+<script src="/assets/js/runtime~main.1cc43786.js"></script>
+<script src="/assets/js/main.e86f8eb4.js"></script>
+<script src="/assets/js/1.b21fad17.js"></script>
+<script src="/assets/js/2.c74b4887.js"></script>
+<script src="/assets/js/4.f867f6a9.js"></script>
+<script src="/assets/js/ccc49370.938f9db4.js"></script>
+<script src="/assets/js/2d8fe9ee.09d7d664.js"></script>
+<script src="/assets/js/1c89ab3b.d668bc40.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/2021/02/08/stable-product-delivery-with-cypress/index.html b/blog/2021/02/08/stable-product-delivery-with-cypress/index.html
index 9f2ab37..da0cbf3 100644
--- a/blog/2021/02/08/stable-product-delivery-with-cypress/index.html
+++ b/blog/2021/02/08/stable-product-delivery-with-cypress/index.html
@@ -3,34 +3,34 @@
 <head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-alpha.70">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
 <link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/opensearch.xml">
 <link rel="alternate" type="application/rss+xml" href="/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Stable Product Delivery with Cypress | Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Stable Product Delivery with Cypress | Apache APISIX™"><meta data-react-helmet="true" property="og:description" content="@LiteSun, Apache APISIX Committer from Shenzhen Zhiliu Technology Co."><meta data-react-helmet="tru [...]
-<link rel="preload" href="/styles.f6196f2d.js" as="script">
-<link rel="preload" href="/runtime~main.dfaa07c6.js" as="script">
-<link rel="preload" href="/main.be0eaecb.js" as="script">
-<link rel="preload" href="/1.b3395235.js" as="script">
-<link rel="preload" href="/2.05b0df04.js" as="script">
-<link rel="preload" href="/4.ce841e81.js" as="script">
-<link rel="preload" href="/ccc49370.5f3fc8be.js" as="script">
-<link rel="preload" href="/2d8fe9ee.8a8bd2e1.js" as="script">
-<link rel="preload" href="/47e0bf55.6b3fe296.js" as="script">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Stable Product Delivery with Cypress | Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Stable Product Delivery with Cypress | Apache APISIX™"><meta data-react-helmet="true" property="og:description" content="@LiteSun, Apache APISIX Committer from Shenzhen Zhiliu Technology Co."><meta data-react-helmet="tru [...]
+<link rel="preload" href="/assets/js/styles.69143f42.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.1cc43786.js" as="script">
+<link rel="preload" href="/assets/js/main.e86f8eb4.js" as="script">
+<link rel="preload" href="/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/assets/js/4.f867f6a9.js" as="script">
+<link rel="preload" href="/assets/js/ccc49370.938f9db4.js" as="script">
+<link rel="preload" href="/assets/js/2d8fe9ee.09d7d664.js" as="script">
+<link rel="preload" href="/assets/js/47e0bf55.a6c19db6.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
-<script src="/styles.f6196f2d.js"></script>
-<script src="/runtime~main.dfaa07c6.js"></script>
-<script src="/main.be0eaecb.js"></script>
-<script src="/1.b3395235.js"></script>
-<script src="/2.05b0df04.js"></script>
-<script src="/4.ce841e81.js"></script>
-<script src="/ccc49370.5f3fc8be.js"></script>
-<script src="/2d8fe9ee.8a8bd2e1.js"></script>
-<script src="/47e0bf55.6b3fe296.js"></script>
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+<script src="/assets/js/styles.69143f42.js"></script>
+<script src="/assets/js/runtime~main.1cc43786.js"></script>
+<script src="/assets/js/main.e86f8eb4.js"></script>
+<script src="/assets/js/1.b21fad17.js"></script>
+<script src="/assets/js/2.c74b4887.js"></script>
+<script src="/assets/js/4.f867f6a9.js"></script>
+<script src="/assets/js/ccc49370.938f9db4.js"></script>
+<script src="/assets/js/2d8fe9ee.09d7d664.js"></script>
+<script src="/assets/js/47e0bf55.a6c19db6.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/index.html b/blog/index.html
index 49f4b3b..663f3c6 100644
--- a/blog/index.html
+++ b/blog/index.html
@@ -3,47 +3,47 @@
 <head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-alpha.70">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
 <link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/opensearch.xml">
 <link rel="alternate" type="application/rss+xml" href="/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Blog | Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Blog | Apache APISIX™"><meta data-react-helmet="true" property="og:description" content="Blog"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docsearch:language" content="en"><meta  [...]
-<link rel="preload" href="/styles.f6196f2d.js" as="script">
-<link rel="preload" href="/runtime~main.dfaa07c6.js" as="script">
-<link rel="preload" href="/main.be0eaecb.js" as="script">
-<link rel="preload" href="/1.b3395235.js" as="script">
-<link rel="preload" href="/2.05b0df04.js" as="script">
-<link rel="preload" href="/4.ce841e81.js" as="script">
-<link rel="preload" href="/a6aa9e1f.0a850dbe.js" as="script">
-<link rel="preload" href="/2d8fe9ee.8a8bd2e1.js" as="script">
-<link rel="preload" href="/e451ae2c.5f322c75.js" as="script">
-<link rel="preload" href="/514de2af.7c1bd42f.js" as="script">
-<link rel="preload" href="/5bb67ffc.3b0eb867.js" as="script">
-<link rel="preload" href="/e02da2c5.ce8c61f7.js" as="script">
-<link rel="preload" href="/37e3b3ea.dca7b1f0.js" as="script">
-<link rel="preload" href="/b2b675dd.24401601.js" as="script">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Blog | Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Blog | Apache APISIX™"><meta data-react-helmet="true" property="og:description" content="Blog"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:url" content="https://apisix.apa [...]
+<link rel="preload" href="/assets/js/styles.69143f42.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.1cc43786.js" as="script">
+<link rel="preload" href="/assets/js/main.e86f8eb4.js" as="script">
+<link rel="preload" href="/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/assets/js/4.f867f6a9.js" as="script">
+<link rel="preload" href="/assets/js/a6aa9e1f.81639056.js" as="script">
+<link rel="preload" href="/assets/js/2d8fe9ee.09d7d664.js" as="script">
+<link rel="preload" href="/assets/js/e451ae2c.162a757f.js" as="script">
+<link rel="preload" href="/assets/js/514de2af.d980fd4f.js" as="script">
+<link rel="preload" href="/assets/js/5bb67ffc.ef54c73b.js" as="script">
+<link rel="preload" href="/assets/js/e02da2c5.d84d16c5.js" as="script">
+<link rel="preload" href="/assets/js/37e3b3ea.bccc6220.js" as="script">
+<link rel="preload" href="/assets/js/b2b675dd.f78e88c7.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;headers&quot;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> </span><span c [...]
-A pluggable filter chain mechanism allows filters to be written to perform different tasks and inserted into the main server.</p><p><img src="https://static.apiseven.com/filters.png" alt="Envoy filter"></p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="expansion-method"></a>Expansion method<a class="hash-link" href="#expansion-method" title="Direct link to heading">#</a></h3><p>The existing filters may not meet the user&#x27;s custom requirements. In this  [...]
-In the example, we configured plugin <code>uri-blocker</code> for the route whose prefix is ​​<code>/foo</code>, as well as the block rule of the plugin and the response status when a block is required.</p><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="second-step-parse-request"></a>Second step, parse request<a class="hash-link" href="#second-step-parse-request" title="Direct link to heading">#</a></h4><p>We encapsulated the client request data into <code> [...]
-<script src="/styles.f6196f2d.js"></script>
-<script src="/runtime~main.dfaa07c6.js"></script>
-<script src="/main.be0eaecb.js"></script>
-<script src="/1.b3395235.js"></script>
-<script src="/2.05b0df04.js"></script>
-<script src="/4.ce841e81.js"></script>
-<script src="/a6aa9e1f.0a850dbe.js"></script>
-<script src="/2d8fe9ee.8a8bd2e1.js"></script>
-<script src="/e451ae2c.5f322c75.js"></script>
-<script src="/514de2af.7c1bd42f.js"></script>
-<script src="/5bb67ffc.3b0eb867.js"></script>
-<script src="/e02da2c5.ce8c61f7.js"></script>
-<script src="/37e3b3ea.dca7b1f0.js"></script>
-<script src="/b2b675dd.24401601.js"></script>
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;headers&quot;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> </span><span c [...]
+A pluggable filter chain mechanism allows filters to be written to perform different tasks and inserted into the main server.</p><p><img src="https://static.apiseven.com/filters.png" alt="Envoy filter"></p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_2LWZ" id="expansion-method"></a>Expansion method<a class="hash-link" href="#expansion-method" title="Direct link to heading">#</a></h3><p>The existing filters may not meet the user&#x27;s custom requirements. In this  [...]
+In the example, we configured plugin <code>uri-blocker</code> for the route whose prefix is ​​<code>/foo</code>, as well as the block rule of the plugin and the response status when a block is required.</p><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_2LWZ" id="second-step-parse-request"></a>Second step, parse request<a class="hash-link" href="#second-step-parse-request" title="Direct link to heading">#</a></h4><p>We encapsulated the client request data into <code> [...]
+<script src="/assets/js/styles.69143f42.js"></script>
+<script src="/assets/js/runtime~main.1cc43786.js"></script>
+<script src="/assets/js/main.e86f8eb4.js"></script>
+<script src="/assets/js/1.b21fad17.js"></script>
+<script src="/assets/js/2.c74b4887.js"></script>
+<script src="/assets/js/4.f867f6a9.js"></script>
+<script src="/assets/js/a6aa9e1f.81639056.js"></script>
+<script src="/assets/js/2d8fe9ee.09d7d664.js"></script>
+<script src="/assets/js/e451ae2c.162a757f.js"></script>
+<script src="/assets/js/514de2af.d980fd4f.js"></script>
+<script src="/assets/js/5bb67ffc.ef54c73b.js"></script>
+<script src="/assets/js/e02da2c5.d84d16c5.js"></script>
+<script src="/assets/js/37e3b3ea.bccc6220.js"></script>
+<script src="/assets/js/b2b675dd.f78e88c7.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/ccc49370.5f3fc8be.js b/ccc49370.5f3fc8be.js
deleted file mode 100644
index 6d6b411..0000000
--- a/ccc49370.5f3fc8be.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[36],{116:function(e,t,a){"use strict";a.r(t);var n=a(0),l=a.n(n),r=a(123),i=a(160),c=a(121);var o=function(e){var t=e.nextItem,a=e.prevItem;return l.a.createElement("nav",{className:"pagination-nav","aria-label":"Blog post page navigation"},l.a.createElement("div",{className:"pagination-nav__item"},a&&l.a.createElement(c.a,{className:"pagination-nav__link",to:a.permalink},l.a.createElement("div",{className:"pagination-nav__sublabel"}," [...]
\ No newline at end of file
diff --git a/committer-guide/index.html b/committer-guide/index.html
deleted file mode 100644
index 97db4d3..0000000
--- a/committer-guide/index.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-alpha.70">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Committer Guide | Apache APISIX™</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docsearch:language" content="en"><meta data-react-helmet="true" name="docsearch:version" content="current"><meta data-react-helmet="true" name="docsearch:docusaurus_tag" content="docs [...]
-<link rel="preload" href="/styles.f6196f2d.js" as="script">
-<link rel="preload" href="/runtime~main.dfaa07c6.js" as="script">
-<link rel="preload" href="/main.be0eaecb.js" as="script">
-<link rel="preload" href="/1.b3395235.js" as="script">
-<link rel="preload" href="/2.05b0df04.js" as="script">
-<link rel="preload" href="/47.ebb97f1e.js" as="script">
-<link rel="preload" href="/50.8a9a9fdc.js" as="script">
-<link rel="preload" href="/935f2afb.cf13d7b3.js" as="script">
-<link rel="preload" href="/17896441.45b06d05.js" as="script">
-<link rel="preload" href="/dcd70f61.96d3e47f.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
-<script src="/styles.f6196f2d.js"></script>
-<script src="/runtime~main.dfaa07c6.js"></script>
-<script src="/main.be0eaecb.js"></script>
-<script src="/1.b3395235.js"></script>
-<script src="/2.05b0df04.js"></script>
-<script src="/47.ebb97f1e.js"></script>
-<script src="/50.8a9a9fdc.js"></script>
-<script src="/935f2afb.cf13d7b3.js"></script>
-<script src="/17896441.45b06d05.js"></script>
-<script src="/dcd70f61.96d3e47f.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/contributor-guide/index.html b/contributor-guide/index.html
deleted file mode 100644
index b1ac251..0000000
--- a/contributor-guide/index.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-alpha.70">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Contributor Guide | Apache APISIX™</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docsearch:language" content="en"><meta data-react-helmet="true" name="docsearch:version" content="current"><meta data-react-helmet="true" name="docsearch:docusaurus_tag" content="do [...]
-<link rel="preload" href="/styles.f6196f2d.js" as="script">
-<link rel="preload" href="/runtime~main.dfaa07c6.js" as="script">
-<link rel="preload" href="/main.be0eaecb.js" as="script">
-<link rel="preload" href="/1.b3395235.js" as="script">
-<link rel="preload" href="/2.05b0df04.js" as="script">
-<link rel="preload" href="/47.ebb97f1e.js" as="script">
-<link rel="preload" href="/50.8a9a9fdc.js" as="script">
-<link rel="preload" href="/935f2afb.cf13d7b3.js" as="script">
-<link rel="preload" href="/17896441.45b06d05.js" as="script">
-<link rel="preload" href="/fdbbc319.b6671752.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
-<script src="/styles.f6196f2d.js"></script>
-<script src="/runtime~main.dfaa07c6.js"></script>
-<script src="/main.be0eaecb.js"></script>
-<script src="/1.b3395235.js"></script>
-<script src="/2.05b0df04.js"></script>
-<script src="/47.ebb97f1e.js"></script>
-<script src="/50.8a9a9fdc.js"></script>
-<script src="/935f2afb.cf13d7b3.js"></script>
-<script src="/17896441.45b06d05.js"></script>
-<script src="/fdbbc319.b6671752.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/dcd70f61.96d3e47f.js b/dcd70f61.96d3e47f.js
deleted file mode 100644
index 5581079..0000000
--- a/dcd70f61.96d3e47f.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[38],{104:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return i})),n.d(t,"metadata",(function(){return c})),n.d(t,"toc",(function(){return l})),n.d(t,"default",(function(){return b}));var o=n(3),r=n(7),a=(n(0),n(118)),i={id:"committer-guide",title:"Committer Guide"},c={unversionedId:"committer-guide",id:"committer-guide",isDocsHomePage:!1,title:"Committer Guide",description:"What can I contribute?",source:"@site/d [...]
\ No newline at end of file
diff --git a/docs/apisix/introduction/index.html b/docs/apisix/introduction/index.html
new file mode 100644
index 0000000..9a78d3d
--- /dev/null
+++ b/docs/apisix/introduction/index.html
@@ -0,0 +1,36 @@
+<!doctype html>
+<html lang="en">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
+<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/opensearch.xml">
+<link rel="alternate" type="application/rss+xml" href="/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Introduction | Apache APISIX™</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docsearch:language" content="en"><meta data-react-helmet="true" name="docsearch:version" content="current"><meta data-react-helmet="true" name="docsearch:docusaurus_tag" content="docs-do [...]
+<link rel="preload" href="/assets/js/styles.69143f42.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.1cc43786.js" as="script">
+<link rel="preload" href="/assets/js/main.e86f8eb4.js" as="script">
+<link rel="preload" href="/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/assets/js/1be78505.0c1819df.js" as="script">
+<link rel="preload" href="/assets/js/d73fca9b.100c8f68.js" as="script">
+<link rel="preload" href="/assets/js/17896441.ab569ce4.js" as="script">
+<link rel="preload" href="/assets/js/1b2ed0ef.fd13d6e7.js" as="script">
+</head>
+<body>
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+<script src="/assets/js/styles.69143f42.js"></script>
+<script src="/assets/js/runtime~main.1cc43786.js"></script>
+<script src="/assets/js/main.e86f8eb4.js"></script>
+<script src="/assets/js/1.b21fad17.js"></script>
+<script src="/assets/js/2.c74b4887.js"></script>
+<script src="/assets/js/1be78505.0c1819df.js"></script>
+<script src="/assets/js/d73fca9b.100c8f68.js"></script>
+<script src="/assets/js/17896441.ab569ce4.js"></script>
+<script src="/assets/js/1b2ed0ef.fd13d6e7.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/dashboard/introduction/index.html b/docs/dashboard/introduction/index.html
new file mode 100644
index 0000000..509f1ff
--- /dev/null
+++ b/docs/dashboard/introduction/index.html
@@ -0,0 +1,36 @@
+<!doctype html>
+<html lang="en">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
+<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/opensearch.xml">
+<link rel="alternate" type="application/rss+xml" href="/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Introduction | Apache APISIX™</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docsearch:language" content="en"><meta data-react-helmet="true" name="docsearch:version" content="current"><meta data-react-helmet="true" name="docsearch:docusaurus_tag" content="docs-do [...]
+<link rel="preload" href="/assets/js/styles.69143f42.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.1cc43786.js" as="script">
+<link rel="preload" href="/assets/js/main.e86f8eb4.js" as="script">
+<link rel="preload" href="/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/assets/js/1be78505.0c1819df.js" as="script">
+<link rel="preload" href="/assets/js/f243156b.1561d1a4.js" as="script">
+<link rel="preload" href="/assets/js/17896441.ab569ce4.js" as="script">
+<link rel="preload" href="/assets/js/6f9b6084.6cf4e9dd.js" as="script">
+</head>
+<body>
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+<script src="/assets/js/styles.69143f42.js"></script>
+<script src="/assets/js/runtime~main.1cc43786.js"></script>
+<script src="/assets/js/main.e86f8eb4.js"></script>
+<script src="/assets/js/1.b21fad17.js"></script>
+<script src="/assets/js/2.c74b4887.js"></script>
+<script src="/assets/js/1be78505.0c1819df.js"></script>
+<script src="/assets/js/f243156b.1561d1a4.js"></script>
+<script src="/assets/js/17896441.ab569ce4.js"></script>
+<script src="/assets/js/6f9b6084.6cf4e9dd.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/general/2fa/index.html b/docs/general/2fa/index.html
new file mode 100644
index 0000000..2c70061
--- /dev/null
+++ b/docs/general/2fa/index.html
@@ -0,0 +1,36 @@
+<!doctype html>
+<html lang="en">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
+<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/opensearch.xml">
+<link rel="alternate" type="application/rss+xml" href="/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">2FA | Apache APISIX™</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docsearch:language" content="en"><meta data-react-helmet="true" name="docsearch:version" content="current"><meta data-react-helmet="true" name="docsearch:docusaurus_tag" content="docs-default-cur [...]
+<link rel="preload" href="/assets/js/styles.69143f42.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.1cc43786.js" as="script">
+<link rel="preload" href="/assets/js/main.e86f8eb4.js" as="script">
+<link rel="preload" href="/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/assets/js/1be78505.0c1819df.js" as="script">
+<link rel="preload" href="/assets/js/935f2afb.66e0e7d2.js" as="script">
+<link rel="preload" href="/assets/js/17896441.ab569ce4.js" as="script">
+<link rel="preload" href="/assets/js/3dc9f306.7c164520.js" as="script">
+</head>
+<body>
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+<script src="/assets/js/styles.69143f42.js"></script>
+<script src="/assets/js/runtime~main.1cc43786.js"></script>
+<script src="/assets/js/main.e86f8eb4.js"></script>
+<script src="/assets/js/1.b21fad17.js"></script>
+<script src="/assets/js/2.c74b4887.js"></script>
+<script src="/assets/js/1be78505.0c1819df.js"></script>
+<script src="/assets/js/935f2afb.66e0e7d2.js"></script>
+<script src="/assets/js/17896441.ab569ce4.js"></script>
+<script src="/assets/js/3dc9f306.7c164520.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/general/committer-guide/index.html b/docs/general/committer-guide/index.html
new file mode 100644
index 0000000..523a959
--- /dev/null
+++ b/docs/general/committer-guide/index.html
@@ -0,0 +1,36 @@
+<!doctype html>
+<html lang="en">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
+<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/opensearch.xml">
+<link rel="alternate" type="application/rss+xml" href="/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Committer Guide | Apache APISIX™</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docsearch:language" content="en"><meta data-react-helmet="true" name="docsearch:version" content="current"><meta data-react-helmet="true" name="docsearch:docusaurus_tag" content="docs [...]
+<link rel="preload" href="/assets/js/styles.69143f42.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.1cc43786.js" as="script">
+<link rel="preload" href="/assets/js/main.e86f8eb4.js" as="script">
+<link rel="preload" href="/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/assets/js/1be78505.0c1819df.js" as="script">
+<link rel="preload" href="/assets/js/935f2afb.66e0e7d2.js" as="script">
+<link rel="preload" href="/assets/js/17896441.ab569ce4.js" as="script">
+<link rel="preload" href="/assets/js/8e784bf3.75bea260.js" as="script">
+</head>
+<body>
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+<script src="/assets/js/styles.69143f42.js"></script>
+<script src="/assets/js/runtime~main.1cc43786.js"></script>
+<script src="/assets/js/main.e86f8eb4.js"></script>
+<script src="/assets/js/1.b21fad17.js"></script>
+<script src="/assets/js/2.c74b4887.js"></script>
+<script src="/assets/js/1be78505.0c1819df.js"></script>
+<script src="/assets/js/935f2afb.66e0e7d2.js"></script>
+<script src="/assets/js/17896441.ab569ce4.js"></script>
+<script src="/assets/js/8e784bf3.75bea260.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/general/contributor-guide/index.html b/docs/general/contributor-guide/index.html
new file mode 100644
index 0000000..2a66cab
--- /dev/null
+++ b/docs/general/contributor-guide/index.html
@@ -0,0 +1,36 @@
+<!doctype html>
+<html lang="en">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
+<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/opensearch.xml">
+<link rel="alternate" type="application/rss+xml" href="/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Contributor Guide | Apache APISIX™</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docsearch:language" content="en"><meta data-react-helmet="true" name="docsearch:version" content="current"><meta data-react-helmet="true" name="docsearch:docusaurus_tag" content="do [...]
+<link rel="preload" href="/assets/js/styles.69143f42.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.1cc43786.js" as="script">
+<link rel="preload" href="/assets/js/main.e86f8eb4.js" as="script">
+<link rel="preload" href="/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/assets/js/1be78505.0c1819df.js" as="script">
+<link rel="preload" href="/assets/js/935f2afb.66e0e7d2.js" as="script">
+<link rel="preload" href="/assets/js/17896441.ab569ce4.js" as="script">
+<link rel="preload" href="/assets/js/adbb350b.d0a4f987.js" as="script">
+</head>
+<body>
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+<script src="/assets/js/styles.69143f42.js"></script>
+<script src="/assets/js/runtime~main.1cc43786.js"></script>
+<script src="/assets/js/main.e86f8eb4.js"></script>
+<script src="/assets/js/1.b21fad17.js"></script>
+<script src="/assets/js/2.c74b4887.js"></script>
+<script src="/assets/js/1be78505.0c1819df.js"></script>
+<script src="/assets/js/935f2afb.66e0e7d2.js"></script>
+<script src="/assets/js/17896441.ab569ce4.js"></script>
+<script src="/assets/js/adbb350b.d0a4f987.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/release-guide/index.html b/docs/general/release-guide/index.html
similarity index 53%
rename from release-guide/index.html
rename to docs/general/release-guide/index.html
index ab2aea4..e8ec033 100644
--- a/release-guide/index.html
+++ b/docs/general/release-guide/index.html
@@ -3,36 +3,35 @@
 <head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-alpha.70">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
 <link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/opensearch.xml">
 <link rel="alternate" type="application/rss+xml" href="/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Release Guide | Apache APISIX™</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docsearch:language" content="en"><meta data-react-helmet="true" name="docsearch:version" content="current"><meta data-react-helmet="true" name="docsearch:docusaurus_tag" content="docs-d [...]
-<link rel="preload" href="/styles.f6196f2d.js" as="script">
-<link rel="preload" href="/runtime~main.dfaa07c6.js" as="script">
-<link rel="preload" href="/main.be0eaecb.js" as="script">
-<link rel="preload" href="/1.b3395235.js" as="script">
-<link rel="preload" href="/2.05b0df04.js" as="script">
-<link rel="preload" href="/47.ebb97f1e.js" as="script">
-<link rel="preload" href="/50.8a9a9fdc.js" as="script">
-<link rel="preload" href="/935f2afb.cf13d7b3.js" as="script">
-<link rel="preload" href="/17896441.45b06d05.js" as="script">
-<link rel="preload" href="/812d7c14.8e5096f0.js" as="script">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Release Guide | Apache APISIX™</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docsearch:language" content="en"><meta data-react-helmet="true" name="docsearch:version" content="current"><meta data-react-helmet="true" name="docsearch:docusaurus_tag" content="docs-d [...]
+<link rel="preload" href="/assets/js/styles.69143f42.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.1cc43786.js" as="script">
+<link rel="preload" href="/assets/js/main.e86f8eb4.js" as="script">
+<link rel="preload" href="/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/assets/js/1be78505.0c1819df.js" as="script">
+<link rel="preload" href="/assets/js/935f2afb.66e0e7d2.js" as="script">
+<link rel="preload" href="/assets/js/17896441.ab569ce4.js" as="script">
+<link rel="preload" href="/assets/js/7af3052c.bcbd3a54.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Please select what kind of key you want:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(1) RSA and RSA (default)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(2) DSA and Elgamal</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(3) DSA (sign only)</span></div><div class="token-line" style="color [...]
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">GnuPG needs to construct a user ID to identify your key.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Real name: ${Enter your username}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Email address: ${Enter your email address}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Comment: ${Enter comments}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">You selected this USER-ID:</span></div><div class=" [...]
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">You need a Passphrase to protect your secret key. # Enter passphrase</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_ [...]
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">/home/resty/.gnupg/pubring.gpg</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">------------------------------</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">pub 4096R/30B5FD72 2020-01-02</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">uid Yuansheng Wang &lt;membphis@apache.org&gt;</span></div><div [...]
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">gpg: sending key 30B5FD72 to hkp server pool.sks-keyservers.net</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><code>pool.sks-keyservers.net</code> is one of the pub key servers, the pub key will be automatically synchronized between each server, just choose anyone.</p><h3><a aria-hidden="true" tabindex="-1" class="anc [...]
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">/home/resty/.gnupg/pubring.gpg</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">------------------------------</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">pub 4096R/30B5FD72 2020-01-02</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Key fingerprint = 0F91 BE0A 55A7 B22F DE1A CEEC 3352 48FD 30B5  [...]
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">You need a Passphrase to protect your secret key. # Enter passphrase</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_Ue-o">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_ [...]
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">/home/resty/.gnupg/pubring.gpg</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">------------------------------</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">pub 4096R/30B5FD72 2020-01-02</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">uid Yuansheng Wang &lt;membphis@apache.org&gt;</span></div><div [...]
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">gpg: sending key 30B5FD72 to hkp server pool.sks-keyservers.net</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_Ue-o">Copy</button></div></div><p><code>pool.sks-keyservers.net</code> is one of the pub key servers, the pub key will be automatically synchronized between each server, just choose anyone.</p><h3><a aria-hidden="true" tabindex="-1" class="anc [...]
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">/home/resty/.gnupg/pubring.gpg</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">------------------------------</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">pub 4096R/30B5FD72 2020-01-02</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Key fingerprint = 0F91 BE0A 55A7 B22F DE1A CEEC 3352 48FD 30B5  [...]
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">$ ls</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">KEYS</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Export the public key and append it to the KEYS file.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-c [...]
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">KEYS</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_Ue-o">Copy</button></div></div><p>Export the public key and append it to the KEYS file.</p><div class="mdxCodeBlock_3lFL"><div class="codeBlockContent_hGly"><div tabindex="0" class="prism-code language-sh codeBlock_23N8 thin-scrollbar"><div class="codeBlockLines_39YC" style="color:#bfc7d5;background-c [...]
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># download repo</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">git clone -b v$APISIX_VERSION git@github.com:apache/apisix.git apache-apisix-$APISIX_VERSION</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># check version</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">$ cd apache-apisix-$APISIX_VERSION &amp;&amp; ./utils/check-version.sh $APISIX_VERSION &amp;&amp; cd ..</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># make tar package / asc / sha512</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">$ cd apache-apisix-$APISIX_VERSION &amp;&amp; make release-src VERSION=$APISIX_VERSION</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">$ mv ./release/* ../ &amp;&amp; cd ..</span></div><div class="token-line" style="color:#bfc7d5"><span class="token pla [...]
@@ -40,7 +39,7 @@
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># check files</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">$ cd .. &amp;&amp; tree</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">├── 1.0</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">│   ├── apache-apisix-1 [...]
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">1 directory, 4 files</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># add files to SVN</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">$ svn add *</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">A         1.0</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">A  (bin)  1.0/apache-apisix-1.0-src.tar.gz.asc</span></div><div class="token-line" style="color:#bfc7d5"><span [...]
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># commit to Apache SVN</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">$ svn --username=${Apache username} commit -m &quot;release 1.0&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Adding         1.0</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Adding  (bin)  1.0/apache-apisix-1.0-src.ta [...]
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># commit to Apache SVN</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">$ svn --username=${Apache username} commit -m &quot;release 1.0&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Adding         1.0</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Adding  (bin)  1.0/apache-apisix-1.0-src.ta [...]
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Release notes:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">https://github.com/apache/apisix/blob/2.0/CHANGELOG.md#200</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">The release candidates:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
@@ -69,16 +68,15 @@
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">The vote will be open for at least 72 hours or until necessary number of</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">votes are reached.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Please vote accordingly:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">[ ] +1 approve</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">[ ] +0 no opinion</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">[ ] -1 disapprove with the reason</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="send-vote-result-thread-to-the-dev-mailing-list"></a>Send VOTE RESULT thread to the dev mailing list<a class="hash-link" href="#send-vote-result-thread-to-the-dev-mailing-list" title="Direct link to heading">#</a></h3><p>Click <a href="https://lists.apache.org/thread.html/r9153da7 [...]
-<script src="/styles.f6196f2d.js"></script>
-<script src="/runtime~main.dfaa07c6.js"></script>
-<script src="/main.be0eaecb.js"></script>
-<script src="/1.b3395235.js"></script>
-<script src="/2.05b0df04.js"></script>
-<script src="/47.ebb97f1e.js"></script>
-<script src="/50.8a9a9fdc.js"></script>
-<script src="/935f2afb.cf13d7b3.js"></script>
-<script src="/17896441.45b06d05.js"></script>
-<script src="/812d7c14.8e5096f0.js"></script>
+</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_Ue-o">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_2LWZ" id="send-vote-result-thread-to-the-dev-mailing-list"></a>Send VOTE RESULT thread to the dev mailing list<a class="hash-link" href="#send-vote-result-thread-to-the-dev-mailing-list" title="Direct link to heading">#</a></h3><p>Click <a href="https://lists.apache.org/thread.html/r9153da7 [...]
+<script src="/assets/js/styles.69143f42.js"></script>
+<script src="/assets/js/runtime~main.1cc43786.js"></script>
+<script src="/assets/js/main.e86f8eb4.js"></script>
+<script src="/assets/js/1.b21fad17.js"></script>
+<script src="/assets/js/2.c74b4887.js"></script>
+<script src="/assets/js/1be78505.0c1819df.js"></script>
+<script src="/assets/js/935f2afb.66e0e7d2.js"></script>
+<script src="/assets/js/17896441.ab569ce4.js"></script>
+<script src="/assets/js/7af3052c.bcbd3a54.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/general/security/index.html b/docs/general/security/index.html
new file mode 100644
index 0000000..1b29de5
--- /dev/null
+++ b/docs/general/security/index.html
@@ -0,0 +1,36 @@
+<!doctype html>
+<html lang="en">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
+<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/opensearch.xml">
+<link rel="alternate" type="application/rss+xml" href="/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Security | Apache APISIX™</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docsearch:language" content="en"><meta data-react-helmet="true" name="docsearch:version" content="current"><meta data-react-helmet="true" name="docsearch:docusaurus_tag" content="docs-defaul [...]
+<link rel="preload" href="/assets/js/styles.69143f42.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.1cc43786.js" as="script">
+<link rel="preload" href="/assets/js/main.e86f8eb4.js" as="script">
+<link rel="preload" href="/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/assets/js/1be78505.0c1819df.js" as="script">
+<link rel="preload" href="/assets/js/935f2afb.66e0e7d2.js" as="script">
+<link rel="preload" href="/assets/js/17896441.ab569ce4.js" as="script">
+<link rel="preload" href="/assets/js/66fbb9c2.048f45e2.js" as="script">
+</head>
+<body>
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+<script src="/assets/js/styles.69143f42.js"></script>
+<script src="/assets/js/runtime~main.1cc43786.js"></script>
+<script src="/assets/js/main.e86f8eb4.js"></script>
+<script src="/assets/js/1.b21fad17.js"></script>
+<script src="/assets/js/2.c74b4887.js"></script>
+<script src="/assets/js/1be78505.0c1819df.js"></script>
+<script src="/assets/js/935f2afb.66e0e7d2.js"></script>
+<script src="/assets/js/17896441.ab569ce4.js"></script>
+<script src="/assets/js/66fbb9c2.048f45e2.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/general/subscribe-guide/index.html b/docs/general/subscribe-guide/index.html
new file mode 100644
index 0000000..10f4d7d
--- /dev/null
+++ b/docs/general/subscribe-guide/index.html
@@ -0,0 +1,36 @@
+<!doctype html>
+<html lang="en">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
+<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/opensearch.xml">
+<link rel="alternate" type="application/rss+xml" href="/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Subscribe Guide | Apache APISIX™</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docsearch:language" content="en"><meta data-react-helmet="true" name="docsearch:version" content="current"><meta data-react-helmet="true" name="docsearch:docusaurus_tag" content="docs [...]
+<link rel="preload" href="/assets/js/styles.69143f42.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.1cc43786.js" as="script">
+<link rel="preload" href="/assets/js/main.e86f8eb4.js" as="script">
+<link rel="preload" href="/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/assets/js/1be78505.0c1819df.js" as="script">
+<link rel="preload" href="/assets/js/935f2afb.66e0e7d2.js" as="script">
+<link rel="preload" href="/assets/js/17896441.ab569ce4.js" as="script">
+<link rel="preload" href="/assets/js/50facf8e.dfead7b3.js" as="script">
+</head>
+<body>
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+<script src="/assets/js/styles.69143f42.js"></script>
+<script src="/assets/js/runtime~main.1cc43786.js"></script>
+<script src="/assets/js/main.e86f8eb4.js"></script>
+<script src="/assets/js/1.b21fad17.js"></script>
+<script src="/assets/js/2.c74b4887.js"></script>
+<script src="/assets/js/1be78505.0c1819df.js"></script>
+<script src="/assets/js/935f2afb.66e0e7d2.js"></script>
+<script src="/assets/js/17896441.ab569ce4.js"></script>
+<script src="/assets/js/50facf8e.dfead7b3.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/index.html b/docs/index.html
new file mode 100644
index 0000000..2bde88b
--- /dev/null
+++ b/docs/index.html
@@ -0,0 +1,32 @@
+<!doctype html>
+<html lang="en">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
+<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/opensearch.xml">
+<link rel="alternate" type="application/rss+xml" href="/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Apache APISIX™"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:url" content="https://apisix.apache.org//docs"><meta data-react-helmet="true" name="docsearch:language" content="en">< [...]
+<link rel="preload" href="/assets/js/styles.69143f42.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.1cc43786.js" as="script">
+<link rel="preload" href="/assets/js/main.e86f8eb4.js" as="script">
+<link rel="preload" href="/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/assets/js/3.e5911a24.js" as="script">
+<link rel="preload" href="/assets/js/25b7c3f2.1e053d90.js" as="script">
+</head>
+<body>
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+<script src="/assets/js/styles.69143f42.js"></script>
+<script src="/assets/js/runtime~main.1cc43786.js"></script>
+<script src="/assets/js/main.e86f8eb4.js"></script>
+<script src="/assets/js/1.b21fad17.js"></script>
+<script src="/assets/js/2.c74b4887.js"></script>
+<script src="/assets/js/3.e5911a24.js"></script>
+<script src="/assets/js/25b7c3f2.1e053d90.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/ingress-controller/introduction/index.html b/docs/ingress-controller/introduction/index.html
new file mode 100644
index 0000000..c747384
--- /dev/null
+++ b/docs/ingress-controller/introduction/index.html
@@ -0,0 +1,36 @@
+<!doctype html>
+<html lang="en">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
+<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/opensearch.xml">
+<link rel="alternate" type="application/rss+xml" href="/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Introduction | Apache APISIX™</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docsearch:language" content="en"><meta data-react-helmet="true" name="docsearch:version" content="current"><meta data-react-helmet="true" name="docsearch:docusaurus_tag" content="docs-do [...]
+<link rel="preload" href="/assets/js/styles.69143f42.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.1cc43786.js" as="script">
+<link rel="preload" href="/assets/js/main.e86f8eb4.js" as="script">
+<link rel="preload" href="/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/assets/js/1be78505.0c1819df.js" as="script">
+<link rel="preload" href="/assets/js/b4a67526.6f6704ad.js" as="script">
+<link rel="preload" href="/assets/js/17896441.ab569ce4.js" as="script">
+<link rel="preload" href="/assets/js/30788500.5be7947f.js" as="script">
+</head>
+<body>
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+<script src="/assets/js/styles.69143f42.js"></script>
+<script src="/assets/js/runtime~main.1cc43786.js"></script>
+<script src="/assets/js/main.e86f8eb4.js"></script>
+<script src="/assets/js/1.b21fad17.js"></script>
+<script src="/assets/js/2.c74b4887.js"></script>
+<script src="/assets/js/1be78505.0c1819df.js"></script>
+<script src="/assets/js/b4a67526.6f6704ad.js"></script>
+<script src="/assets/js/17896441.ab569ce4.js"></script>
+<script src="/assets/js/30788500.5be7947f.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/downloads/ProjectCard/index.html b/downloads/ProjectCard/index.html
index 7f35c2d..464d243 100644
--- a/downloads/ProjectCard/index.html
+++ b/downloads/ProjectCard/index.html
@@ -3,28 +3,28 @@
 <head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-alpha.70">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
 <link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/opensearch.xml">
 <link rel="alternate" type="application/rss+xml" href="/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true"></title><link rel="stylesheet" href="/styles.6b3ccb20.css">
-<link rel="preload" href="/styles.f6196f2d.js" as="script">
-<link rel="preload" href="/runtime~main.dfaa07c6.js" as="script">
-<link rel="preload" href="/main.be0eaecb.js" as="script">
-<link rel="preload" href="/3.538bc209.js" as="script">
-<link rel="preload" href="/98c69322.58eaa6a3.js" as="script">
-<link rel="preload" href="/47f8a22a.39ee8202.js" as="script">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true"></title><link rel="stylesheet" href="/assets/css/styles.545fc2a3.css">
+<link rel="preload" href="/assets/js/styles.69143f42.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.1cc43786.js" as="script">
+<link rel="preload" href="/assets/js/main.e86f8eb4.js" as="script">
+<link rel="preload" href="/assets/js/3.e5911a24.js" as="script">
+<link rel="preload" href="/assets/js/98c69322.3d9a7897.js" as="script">
+<link rel="preload" href="/assets/js/47f8a22a.e97fe1a0.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div class="ProjectCard__Card-sc-12v8c3p-0 fUOFUE"><div class="ProjectCard__LeftSide-sc-12v8c3p-1 ewHYSJ"><a href="https://github.com/undefined" target="_blank" class="ProjectCard__Title-sc-12v8c3p-2 eXqIcO"><span class="ProjectCard__ShapeBeforeTitle-sc-12v8c3p-4 kjTfns"><svg aria-hidden="true" data-prefix="fas" data-icon="hexagon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512" class="hexagon_svg__svg-inline--fa hexagon_svg__fa-hexagon hexagon_svg__fa-w-18 hexagon_svg__fa-7x">< [...]
-<script src="/styles.f6196f2d.js"></script>
-<script src="/runtime~main.dfaa07c6.js"></script>
-<script src="/main.be0eaecb.js"></script>
-<script src="/3.538bc209.js"></script>
-<script src="/98c69322.58eaa6a3.js"></script>
-<script src="/47f8a22a.39ee8202.js"></script>
+<script src="/assets/js/styles.69143f42.js"></script>
+<script src="/assets/js/runtime~main.1cc43786.js"></script>
+<script src="/assets/js/main.e86f8eb4.js"></script>
+<script src="/assets/js/3.e5911a24.js"></script>
+<script src="/assets/js/98c69322.3d9a7897.js"></script>
+<script src="/assets/js/47f8a22a.e97fe1a0.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/downloads/index.html b/downloads/index.html
index c262fda..fb802c0 100644
--- a/downloads/index.html
+++ b/downloads/index.html
@@ -3,35 +3,35 @@
 <head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-alpha.70">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
 <link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/opensearch.xml">
 <link rel="alternate" type="application/rss+xml" href="/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Apache APISIX™"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docsearch:language" content="en"><meta data-react-helmet="true" name="docsearch:docusaurus_tag" content="default"><meta data- [...]
-<link rel="preload" href="/styles.f6196f2d.js" as="script">
-<link rel="preload" href="/runtime~main.dfaa07c6.js" as="script">
-<link rel="preload" href="/main.be0eaecb.js" as="script">
-<link rel="preload" href="/1.b3395235.js" as="script">
-<link rel="preload" href="/2.05b0df04.js" as="script">
-<link rel="preload" href="/3.538bc209.js" as="script">
-<link rel="preload" href="/98c69322.58eaa6a3.js" as="script">
-<link rel="preload" href="/47f8a22a.39ee8202.js" as="script">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Apache APISIX™"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:url" content="https://apisix.apache.org//downloads/"><meta data-react-helmet="true" name="docsearch:language" content= [...]
+<link rel="preload" href="/assets/js/styles.69143f42.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.1cc43786.js" as="script">
+<link rel="preload" href="/assets/js/main.e86f8eb4.js" as="script">
+<link rel="preload" href="/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/assets/js/3.e5911a24.js" as="script">
+<link rel="preload" href="/assets/js/98c69322.3d9a7897.js" as="script">
+<link rel="preload" href="/assets/js/47f8a22a.e97fe1a0.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># or</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">pgp -ka KEYS</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div><br>To verify the binaries/sources you can download the relevant asc files for it from main distribution directory and follow the below guide.<div class="codeBlockContent_actS"><di [...]
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># or</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">pgp -ka KEYS</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_Ue-o">Copy</button></div><br>To verify the binaries/sources you can download the relevant asc files for it from main distribution directory and follow the below guide.<div class="codeBlockContent_hGly"><di [...]
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># or</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">pgpv apache-apisix-********.asc</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># or</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">pgp apache-apisix-********.asc</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></div></div></div><footer class="footer"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">ASF</h [...]
-<script src="/styles.f6196f2d.js"></script>
-<script src="/runtime~main.dfaa07c6.js"></script>
-<script src="/main.be0eaecb.js"></script>
-<script src="/1.b3395235.js"></script>
-<script src="/2.05b0df04.js"></script>
-<script src="/3.538bc209.js"></script>
-<script src="/98c69322.58eaa6a3.js"></script>
-<script src="/47f8a22a.39ee8202.js"></script>
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># or</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">pgp apache-apisix-********.asc</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_Ue-o">Copy</button></div></div></div></div></div><footer class="footer"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">ASF</h [...]
+<script src="/assets/js/styles.69143f42.js"></script>
+<script src="/assets/js/runtime~main.1cc43786.js"></script>
+<script src="/assets/js/main.e86f8eb4.js"></script>
+<script src="/assets/js/1.b21fad17.js"></script>
+<script src="/assets/js/2.c74b4887.js"></script>
+<script src="/assets/js/3.e5911a24.js"></script>
+<script src="/assets/js/98c69322.3d9a7897.js"></script>
+<script src="/assets/js/47f8a22a.e97fe1a0.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/events/2020/12/23/release-apache-apisix-ingress-controller-0.1.0/index.html b/events/2020/12/23/release-apache-apisix-ingress-controller-0.1.0/index.html
index 95d445d..cac87e4 100644
--- a/events/2020/12/23/release-apache-apisix-ingress-controller-0.1.0/index.html
+++ b/events/2020/12/23/release-apache-apisix-ingress-controller-0.1.0/index.html
@@ -3,34 +3,34 @@
 <head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-alpha.70">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
 <link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/opensearch.xml">
 <link rel="alternate" type="application/rss+xml" href="/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Release Apache APISIX Ingress Controller 0.1.0 | Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Release Apache APISIX Ingress Controller 0.1.0 | Apache APISIX™"><meta data-react-helmet="true" property="og:description" content="This release mainly improve basic features, bugfix and adds test cases."><meta  [...]
-<link rel="preload" href="/styles.f6196f2d.js" as="script">
-<link rel="preload" href="/runtime~main.dfaa07c6.js" as="script">
-<link rel="preload" href="/main.be0eaecb.js" as="script">
-<link rel="preload" href="/1.b3395235.js" as="script">
-<link rel="preload" href="/2.05b0df04.js" as="script">
-<link rel="preload" href="/4.ce841e81.js" as="script">
-<link rel="preload" href="/ccc49370.5f3fc8be.js" as="script">
-<link rel="preload" href="/f7488fe8.07e79c17.js" as="script">
-<link rel="preload" href="/12e5767f.eadd535c.js" as="script">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Release Apache APISIX Ingress Controller 0.1.0 | Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Release Apache APISIX Ingress Controller 0.1.0 | Apache APISIX™"><meta data-react-helmet="true" property="og:description" content="This release mainly improve basic features, bugfix and adds test cases."><meta  [...]
+<link rel="preload" href="/assets/js/styles.69143f42.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.1cc43786.js" as="script">
+<link rel="preload" href="/assets/js/main.e86f8eb4.js" as="script">
+<link rel="preload" href="/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/assets/js/4.f867f6a9.js" as="script">
+<link rel="preload" href="/assets/js/ccc49370.938f9db4.js" as="script">
+<link rel="preload" href="/assets/js/f7488fe8.e624b827.js" as="script">
+<link rel="preload" href="/assets/js/12e5767f.2a3dfa9d.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
-<script src="/styles.f6196f2d.js"></script>
-<script src="/runtime~main.dfaa07c6.js"></script>
-<script src="/main.be0eaecb.js"></script>
-<script src="/1.b3395235.js"></script>
-<script src="/2.05b0df04.js"></script>
-<script src="/4.ce841e81.js"></script>
-<script src="/ccc49370.5f3fc8be.js"></script>
-<script src="/f7488fe8.07e79c17.js"></script>
-<script src="/12e5767f.eadd535c.js"></script>
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+<script src="/assets/js/styles.69143f42.js"></script>
+<script src="/assets/js/runtime~main.1cc43786.js"></script>
+<script src="/assets/js/main.e86f8eb4.js"></script>
+<script src="/assets/js/1.b21fad17.js"></script>
+<script src="/assets/js/2.c74b4887.js"></script>
+<script src="/assets/js/4.f867f6a9.js"></script>
+<script src="/assets/js/ccc49370.938f9db4.js"></script>
+<script src="/assets/js/f7488fe8.e624b827.js"></script>
+<script src="/assets/js/12e5767f.2a3dfa9d.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/events/2021/01/19/release-apache-apisix-ingress-controller-0.2.0/index.html b/events/2021/01/19/release-apache-apisix-ingress-controller-0.2.0/index.html
index 091ade4..7b49f39 100644
--- a/events/2021/01/19/release-apache-apisix-ingress-controller-0.2.0/index.html
+++ b/events/2021/01/19/release-apache-apisix-ingress-controller-0.2.0/index.html
@@ -3,34 +3,34 @@
 <head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-alpha.70">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
 <link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/opensearch.xml">
 <link rel="alternate" type="application/rss+xml" href="/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Release Apache APISIX Ingress Controller 0.2.0 | Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Release Apache APISIX Ingress Controller 0.2.0 | Apache APISIX™"><meta data-react-helmet="true" property="og:description" content="This release mainly improve basic features, bugfix and adds test cases."><meta  [...]
-<link rel="preload" href="/styles.f6196f2d.js" as="script">
-<link rel="preload" href="/runtime~main.dfaa07c6.js" as="script">
-<link rel="preload" href="/main.be0eaecb.js" as="script">
-<link rel="preload" href="/1.b3395235.js" as="script">
-<link rel="preload" href="/2.05b0df04.js" as="script">
-<link rel="preload" href="/4.ce841e81.js" as="script">
-<link rel="preload" href="/ccc49370.5f3fc8be.js" as="script">
-<link rel="preload" href="/f7488fe8.07e79c17.js" as="script">
-<link rel="preload" href="/4eed9ed2.27bea7fb.js" as="script">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Release Apache APISIX Ingress Controller 0.2.0 | Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Release Apache APISIX Ingress Controller 0.2.0 | Apache APISIX™"><meta data-react-helmet="true" property="og:description" content="This release mainly improve basic features, bugfix and adds test cases."><meta  [...]
+<link rel="preload" href="/assets/js/styles.69143f42.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.1cc43786.js" as="script">
+<link rel="preload" href="/assets/js/main.e86f8eb4.js" as="script">
+<link rel="preload" href="/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/assets/js/4.f867f6a9.js" as="script">
+<link rel="preload" href="/assets/js/ccc49370.938f9db4.js" as="script">
+<link rel="preload" href="/assets/js/f7488fe8.e624b827.js" as="script">
+<link rel="preload" href="/assets/js/4eed9ed2.f6cbdbbf.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
-<script src="/styles.f6196f2d.js"></script>
-<script src="/runtime~main.dfaa07c6.js"></script>
-<script src="/main.be0eaecb.js"></script>
-<script src="/1.b3395235.js"></script>
-<script src="/2.05b0df04.js"></script>
-<script src="/4.ce841e81.js"></script>
-<script src="/ccc49370.5f3fc8be.js"></script>
-<script src="/f7488fe8.07e79c17.js"></script>
-<script src="/4eed9ed2.27bea7fb.js"></script>
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+<script src="/assets/js/styles.69143f42.js"></script>
+<script src="/assets/js/runtime~main.1cc43786.js"></script>
+<script src="/assets/js/main.e86f8eb4.js"></script>
+<script src="/assets/js/1.b21fad17.js"></script>
+<script src="/assets/js/2.c74b4887.js"></script>
+<script src="/assets/js/4.f867f6a9.js"></script>
+<script src="/assets/js/ccc49370.938f9db4.js"></script>
+<script src="/assets/js/f7488fe8.e624b827.js"></script>
+<script src="/assets/js/4eed9ed2.f6cbdbbf.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/events/2021/02/09/release-apache-apisix-2.3/index.html b/events/2021/02/09/release-apache-apisix-2.3/index.html
index e22a934..fb1d98f 100644
--- a/events/2021/02/09/release-apache-apisix-2.3/index.html
+++ b/events/2021/02/09/release-apache-apisix-2.3/index.html
@@ -3,34 +3,34 @@
 <head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-alpha.70">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
 <link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/opensearch.xml">
 <link rel="alternate" type="application/rss+xml" href="/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Release Apache APISIX 2.3 | Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Release Apache APISIX 2.3 | Apache APISIX™"><meta data-react-helmet="true" property="og:description" content="Change"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" n [...]
-<link rel="preload" href="/styles.f6196f2d.js" as="script">
-<link rel="preload" href="/runtime~main.dfaa07c6.js" as="script">
-<link rel="preload" href="/main.be0eaecb.js" as="script">
-<link rel="preload" href="/1.b3395235.js" as="script">
-<link rel="preload" href="/2.05b0df04.js" as="script">
-<link rel="preload" href="/4.ce841e81.js" as="script">
-<link rel="preload" href="/ccc49370.5f3fc8be.js" as="script">
-<link rel="preload" href="/f7488fe8.07e79c17.js" as="script">
-<link rel="preload" href="/41b4926b.4de568af.js" as="script">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Release Apache APISIX 2.3 | Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Release Apache APISIX 2.3 | Apache APISIX™"><meta data-react-helmet="true" property="og:description" content="Change"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" p [...]
+<link rel="preload" href="/assets/js/styles.69143f42.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.1cc43786.js" as="script">
+<link rel="preload" href="/assets/js/main.e86f8eb4.js" as="script">
+<link rel="preload" href="/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/assets/js/4.f867f6a9.js" as="script">
+<link rel="preload" href="/assets/js/ccc49370.938f9db4.js" as="script">
+<link rel="preload" href="/assets/js/f7488fe8.e624b827.js" as="script">
+<link rel="preload" href="/assets/js/41b4926b.b72ec77b.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
-<script src="/styles.f6196f2d.js"></script>
-<script src="/runtime~main.dfaa07c6.js"></script>
-<script src="/main.be0eaecb.js"></script>
-<script src="/1.b3395235.js"></script>
-<script src="/2.05b0df04.js"></script>
-<script src="/4.ce841e81.js"></script>
-<script src="/ccc49370.5f3fc8be.js"></script>
-<script src="/f7488fe8.07e79c17.js"></script>
-<script src="/41b4926b.4de568af.js"></script>
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+<script src="/assets/js/styles.69143f42.js"></script>
+<script src="/assets/js/runtime~main.1cc43786.js"></script>
+<script src="/assets/js/main.e86f8eb4.js"></script>
+<script src="/assets/js/1.b21fad17.js"></script>
+<script src="/assets/js/2.c74b4887.js"></script>
+<script src="/assets/js/4.f867f6a9.js"></script>
+<script src="/assets/js/ccc49370.938f9db4.js"></script>
+<script src="/assets/js/f7488fe8.e624b827.js"></script>
+<script src="/assets/js/41b4926b.b72ec77b.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/events/2021/02/11/release-apache-apisix-ingress-controller-0.3.0/index.html b/events/2021/02/11/release-apache-apisix-ingress-controller-0.3.0/index.html
index 245b6dd..43106d0 100644
--- a/events/2021/02/11/release-apache-apisix-ingress-controller-0.3.0/index.html
+++ b/events/2021/02/11/release-apache-apisix-ingress-controller-0.3.0/index.html
@@ -3,34 +3,34 @@
 <head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-alpha.70">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
 <link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/opensearch.xml">
 <link rel="alternate" type="application/rss+xml" href="/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Release Apache APISIX Ingress Controller 0.3.0 | Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Release Apache APISIX Ingress Controller 0.3.0 | Apache APISIX™"><meta data-react-helmet="true" property="og:description" content="This release mainly improves the program robustness and adds some features."><m [...]
-<link rel="preload" href="/styles.f6196f2d.js" as="script">
-<link rel="preload" href="/runtime~main.dfaa07c6.js" as="script">
-<link rel="preload" href="/main.be0eaecb.js" as="script">
-<link rel="preload" href="/1.b3395235.js" as="script">
-<link rel="preload" href="/2.05b0df04.js" as="script">
-<link rel="preload" href="/4.ce841e81.js" as="script">
-<link rel="preload" href="/ccc49370.5f3fc8be.js" as="script">
-<link rel="preload" href="/f7488fe8.07e79c17.js" as="script">
-<link rel="preload" href="/1be5d2e8.d888a0d3.js" as="script">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Release Apache APISIX Ingress Controller 0.3.0 | Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Release Apache APISIX Ingress Controller 0.3.0 | Apache APISIX™"><meta data-react-helmet="true" property="og:description" content="This release mainly improves the program robustness and adds some features."><m [...]
+<link rel="preload" href="/assets/js/styles.69143f42.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.1cc43786.js" as="script">
+<link rel="preload" href="/assets/js/main.e86f8eb4.js" as="script">
+<link rel="preload" href="/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/assets/js/4.f867f6a9.js" as="script">
+<link rel="preload" href="/assets/js/ccc49370.938f9db4.js" as="script">
+<link rel="preload" href="/assets/js/f7488fe8.e624b827.js" as="script">
+<link rel="preload" href="/assets/js/1be5d2e8.0ab794df.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
-<script src="/styles.f6196f2d.js"></script>
-<script src="/runtime~main.dfaa07c6.js"></script>
-<script src="/main.be0eaecb.js"></script>
-<script src="/1.b3395235.js"></script>
-<script src="/2.05b0df04.js"></script>
-<script src="/4.ce841e81.js"></script>
-<script src="/ccc49370.5f3fc8be.js"></script>
-<script src="/f7488fe8.07e79c17.js"></script>
-<script src="/1be5d2e8.d888a0d3.js"></script>
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+<script src="/assets/js/styles.69143f42.js"></script>
+<script src="/assets/js/runtime~main.1cc43786.js"></script>
+<script src="/assets/js/main.e86f8eb4.js"></script>
+<script src="/assets/js/1.b21fad17.js"></script>
+<script src="/assets/js/2.c74b4887.js"></script>
+<script src="/assets/js/4.f867f6a9.js"></script>
+<script src="/assets/js/ccc49370.938f9db4.js"></script>
+<script src="/assets/js/f7488fe8.e624b827.js"></script>
+<script src="/assets/js/1be5d2e8.0ab794df.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/events/2021/02/12/release-apache-apisix-dashboard-2.4/index.html b/events/2021/02/12/release-apache-apisix-dashboard-2.4/index.html
index 5a428fe..1174a6c 100644
--- a/events/2021/02/12/release-apache-apisix-dashboard-2.4/index.html
+++ b/events/2021/02/12/release-apache-apisix-dashboard-2.4/index.html
@@ -3,34 +3,34 @@
 <head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-alpha.70">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
 <link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/opensearch.xml">
 <link rel="alternate" type="application/rss+xml" href="/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Release Apache APISIX Dashboard 2.4 | Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Release Apache APISIX Dashboard 2.4 | Apache APISIX™"><meta data-react-helmet="true" property="og:description" content="This release mainly improves basic features, bugfix and adds test cases."><meta data-react-helmet="tr [...]
-<link rel="preload" href="/styles.f6196f2d.js" as="script">
-<link rel="preload" href="/runtime~main.dfaa07c6.js" as="script">
-<link rel="preload" href="/main.be0eaecb.js" as="script">
-<link rel="preload" href="/1.b3395235.js" as="script">
-<link rel="preload" href="/2.05b0df04.js" as="script">
-<link rel="preload" href="/4.ce841e81.js" as="script">
-<link rel="preload" href="/ccc49370.5f3fc8be.js" as="script">
-<link rel="preload" href="/f7488fe8.07e79c17.js" as="script">
-<link rel="preload" href="/d4de91ec.5a26bbda.js" as="script">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Release Apache APISIX Dashboard 2.4 | Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Release Apache APISIX Dashboard 2.4 | Apache APISIX™"><meta data-react-helmet="true" property="og:description" content="This release mainly improves basic features, bugfix and adds test cases."><meta data-react-helmet="tr [...]
+<link rel="preload" href="/assets/js/styles.69143f42.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.1cc43786.js" as="script">
+<link rel="preload" href="/assets/js/main.e86f8eb4.js" as="script">
+<link rel="preload" href="/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/assets/js/4.f867f6a9.js" as="script">
+<link rel="preload" href="/assets/js/ccc49370.938f9db4.js" as="script">
+<link rel="preload" href="/assets/js/f7488fe8.e624b827.js" as="script">
+<link rel="preload" href="/assets/js/d4de91ec.5615c552.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
-<script src="/styles.f6196f2d.js"></script>
-<script src="/runtime~main.dfaa07c6.js"></script>
-<script src="/main.be0eaecb.js"></script>
-<script src="/1.b3395235.js"></script>
-<script src="/2.05b0df04.js"></script>
-<script src="/4.ce841e81.js"></script>
-<script src="/ccc49370.5f3fc8be.js"></script>
-<script src="/f7488fe8.07e79c17.js"></script>
-<script src="/d4de91ec.5a26bbda.js"></script>
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+<script src="/assets/js/styles.69143f42.js"></script>
+<script src="/assets/js/runtime~main.1cc43786.js"></script>
+<script src="/assets/js/main.e86f8eb4.js"></script>
+<script src="/assets/js/1.b21fad17.js"></script>
+<script src="/assets/js/2.c74b4887.js"></script>
+<script src="/assets/js/4.f867f6a9.js"></script>
+<script src="/assets/js/ccc49370.938f9db4.js"></script>
+<script src="/assets/js/f7488fe8.e624b827.js"></script>
+<script src="/assets/js/d4de91ec.5615c552.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/events/index.html b/events/index.html
index 473bad9..d0e84d6 100644
--- a/events/index.html
+++ b/events/index.html
@@ -3,44 +3,44 @@
 <head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-alpha.70">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
 <link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/opensearch.xml">
 <link rel="alternate" type="application/rss+xml" href="/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Blog | Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Blog | Apache APISIX™"><meta data-react-helmet="true" property="og:description" content="Blog"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docsearch:language" content="en"><meta  [...]
-<link rel="preload" href="/styles.f6196f2d.js" as="script">
-<link rel="preload" href="/runtime~main.dfaa07c6.js" as="script">
-<link rel="preload" href="/main.be0eaecb.js" as="script">
-<link rel="preload" href="/1.b3395235.js" as="script">
-<link rel="preload" href="/2.05b0df04.js" as="script">
-<link rel="preload" href="/4.ce841e81.js" as="script">
-<link rel="preload" href="/a6aa9e1f.0a850dbe.js" as="script">
-<link rel="preload" href="/f7488fe8.07e79c17.js" as="script">
-<link rel="preload" href="/bacea567.b9d05017.js" as="script">
-<link rel="preload" href="/c119cf3c.3ae89b6e.js" as="script">
-<link rel="preload" href="/17dc512b.e743caaf.js" as="script">
-<link rel="preload" href="/c5594f1a.37e99f35.js" as="script">
-<link rel="preload" href="/fa919c95.608202b3.js" as="script">
-<link rel="preload" href="/574dc000.ed5637a0.js" as="script">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Blog | Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Blog | Apache APISIX™"><meta data-react-helmet="true" property="og:description" content="Blog"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:url" content="https://apisix.apa [...]
+<link rel="preload" href="/assets/js/styles.69143f42.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.1cc43786.js" as="script">
+<link rel="preload" href="/assets/js/main.e86f8eb4.js" as="script">
+<link rel="preload" href="/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/assets/js/4.f867f6a9.js" as="script">
+<link rel="preload" href="/assets/js/a6aa9e1f.81639056.js" as="script">
+<link rel="preload" href="/assets/js/f7488fe8.e624b827.js" as="script">
+<link rel="preload" href="/assets/js/bacea567.58c33be1.js" as="script">
+<link rel="preload" href="/assets/js/c119cf3c.a240434d.js" as="script">
+<link rel="preload" href="/assets/js/17dc512b.570e01fe.js" as="script">
+<link rel="preload" href="/assets/js/c5594f1a.b73b27b8.js" as="script">
+<link rel="preload" href="/assets/js/fa919c95.8686a53b.js" as="script">
+<link rel="preload" href="/assets/js/574dc000.24d7bcfe.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
-<script src="/styles.f6196f2d.js"></script>
-<script src="/runtime~main.dfaa07c6.js"></script>
-<script src="/main.be0eaecb.js"></script>
-<script src="/1.b3395235.js"></script>
-<script src="/2.05b0df04.js"></script>
-<script src="/4.ce841e81.js"></script>
-<script src="/a6aa9e1f.0a850dbe.js"></script>
-<script src="/f7488fe8.07e79c17.js"></script>
-<script src="/bacea567.b9d05017.js"></script>
-<script src="/c119cf3c.3ae89b6e.js"></script>
-<script src="/17dc512b.e743caaf.js"></script>
-<script src="/c5594f1a.37e99f35.js"></script>
-<script src="/fa919c95.608202b3.js"></script>
-<script src="/574dc000.ed5637a0.js"></script>
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+<script src="/assets/js/styles.69143f42.js"></script>
+<script src="/assets/js/runtime~main.1cc43786.js"></script>
+<script src="/assets/js/main.e86f8eb4.js"></script>
+<script src="/assets/js/1.b21fad17.js"></script>
+<script src="/assets/js/2.c74b4887.js"></script>
+<script src="/assets/js/4.f867f6a9.js"></script>
+<script src="/assets/js/a6aa9e1f.81639056.js"></script>
+<script src="/assets/js/f7488fe8.e624b827.js"></script>
+<script src="/assets/js/bacea567.58c33be1.js"></script>
+<script src="/assets/js/c119cf3c.a240434d.js"></script>
+<script src="/assets/js/17dc512b.570e01fe.js"></script>
+<script src="/assets/js/c5594f1a.b73b27b8.js"></script>
+<script src="/assets/js/fa919c95.8686a53b.js"></script>
+<script src="/assets/js/574dc000.24d7bcfe.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/fdbbc319.b6671752.js b/fdbbc319.b6671752.js
deleted file mode 100644
index 5fb2490..0000000
--- a/fdbbc319.b6671752.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[43],{111:function(e,t,r){"use strict";r.r(t),r.d(t,"frontMatter",(function(){return i})),r.d(t,"metadata",(function(){return c})),r.d(t,"toc",(function(){return l})),r.d(t,"default",(function(){return b}));var n=r(3),o=r(7),a=(r(0),r(118)),i={id:"contributor-guide",title:"Contributor Guide"},c={unversionedId:"contributor-guide",id:"contributor-guide",isDocsHomePage:!1,title:"Contributor Guide",description:"Please fee free to report bug [...]
\ No newline at end of file
diff --git a/help/index.html b/help/index.html
index 9dfe945..a9261f4 100644
--- a/help/index.html
+++ b/help/index.html
@@ -3,30 +3,30 @@
 <head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-alpha.70">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
 <link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/opensearch.xml">
 <link rel="alternate" type="application/rss+xml" href="/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Apache APISIX™"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docsearch:language" content="en"><meta data-react-helmet="true" name="docsearch:docusaurus_tag" content="default"><meta data- [...]
-<link rel="preload" href="/styles.f6196f2d.js" as="script">
-<link rel="preload" href="/runtime~main.dfaa07c6.js" as="script">
-<link rel="preload" href="/main.be0eaecb.js" as="script">
-<link rel="preload" href="/1.b3395235.js" as="script">
-<link rel="preload" href="/2.05b0df04.js" as="script">
-<link rel="preload" href="/3.538bc209.js" as="script">
-<link rel="preload" href="/7e37206e.e303dbe6.js" as="script">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Apache APISIX™"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:url" content="https://apisix.apache.org//help"><meta data-react-helmet="true" name="docsearch:language" content="en">< [...]
+<link rel="preload" href="/assets/js/styles.69143f42.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.1cc43786.js" as="script">
+<link rel="preload" href="/assets/js/main.e86f8eb4.js" as="script">
+<link rel="preload" href="/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/assets/js/3.e5911a24.js" as="script">
+<link rel="preload" href="/assets/js/7e37206e.7992680e.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
-<script src="/styles.f6196f2d.js"></script>
-<script src="/runtime~main.dfaa07c6.js"></script>
-<script src="/main.be0eaecb.js"></script>
-<script src="/1.b3395235.js"></script>
-<script src="/2.05b0df04.js"></script>
-<script src="/3.538bc209.js"></script>
-<script src="/7e37206e.e303dbe6.js"></script>
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+<script src="/assets/js/styles.69143f42.js"></script>
+<script src="/assets/js/runtime~main.1cc43786.js"></script>
+<script src="/assets/js/main.e86f8eb4.js"></script>
+<script src="/assets/js/1.b21fad17.js"></script>
+<script src="/assets/js/2.c74b4887.js"></script>
+<script src="/assets/js/3.e5911a24.js"></script>
+<script src="/assets/js/7e37206e.7992680e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/index.html b/index.html
index 0a40e38..7aea9f6 100644
--- a/index.html
+++ b/index.html
@@ -3,30 +3,30 @@
 <head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-alpha.70">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
 <link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/opensearch.xml">
 <link rel="alternate" type="application/rss+xml" href="/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Apache APISIX™"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docsearch:language" content="en"><meta data-react-helmet="true" name="docsearch:docusaurus_tag" content="default"><meta data- [...]
-<link rel="preload" href="/styles.f6196f2d.js" as="script">
-<link rel="preload" href="/runtime~main.dfaa07c6.js" as="script">
-<link rel="preload" href="/main.be0eaecb.js" as="script">
-<link rel="preload" href="/1.b3395235.js" as="script">
-<link rel="preload" href="/2.05b0df04.js" as="script">
-<link rel="preload" href="/51.b0dede12.js" as="script">
-<link rel="preload" href="/c4f5d8e4.4c497370.js" as="script">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Apache APISIX™"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:url" content="https://apisix.apache.org//"><meta data-react-helmet="true" name="docsearch:language" content="en"><meta [...]
+<link rel="preload" href="/assets/js/styles.69143f42.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.1cc43786.js" as="script">
+<link rel="preload" href="/assets/js/main.e86f8eb4.js" as="script">
+<link rel="preload" href="/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/assets/js/59.654079dd.js" as="script">
+<link rel="preload" href="/assets/js/c4f5d8e4.a4d61c1b.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div class="baseUrlIssueBanner_1-cE" style="border:solid red thick;background-color:#ffe6b3;margin:20px;padding:20px;font-size:20px"><p style="font-weight:bold;font-size:30px">Your Docusaurus site did not load properly.</p><p>A very common reason is a wrong site <a href="https://v2.docusaurus.io/docs/docusaurus.config.js/#baseurl" style="font-weight:bold">baseUrl configuration</a>.</p><p>Current configured baseUrl = <span style="font-weight:bold;color:red">/</span>  (default value)</p><p [...]
-<script src="/styles.f6196f2d.js"></script>
-<script src="/runtime~main.dfaa07c6.js"></script>
-<script src="/main.be0eaecb.js"></script>
-<script src="/1.b3395235.js"></script>
-<script src="/2.05b0df04.js"></script>
-<script src="/51.b0dede12.js"></script>
-<script src="/c4f5d8e4.4c497370.js"></script>
+<div id="docusaurus-base-url-issue-banner-container"></div><nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title> [...]
+<script src="/assets/js/styles.69143f42.js"></script>
+<script src="/assets/js/runtime~main.1cc43786.js"></script>
+<script src="/assets/js/main.e86f8eb4.js"></script>
+<script src="/assets/js/1.b21fad17.js"></script>
+<script src="/assets/js/2.c74b4887.js"></script>
+<script src="/assets/js/59.654079dd.js"></script>
+<script src="/assets/js/c4f5d8e4.a4d61c1b.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/main.be0eaecb.js b/main.be0eaecb.js
deleted file mode 100644
index 3155c6d..0000000
--- a/main.be0eaecb.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! For license information please see main.be0eaecb.js.LICENSE.txt */
-(window.webpackJsonp=window.webpackJsonp||[]).push([[44],[function(e,t,n){"use strict";e.exports=n(39)},function(e,t,n){e.exports=n(43)()},function(e,t,n){"use strict";n.d(t,"a",(function(){return v})),n.d(t,"b",(function(){return w})),n.d(t,"c",(function(){return x})),n.d(t,"d",(function(){return A})),n.d(t,"e",(function(){return b})),n.d(t,"f",(function(){return L})),n.d(t,"g",(function(){return j})),n.d(t,"h",(function(){return g})),n.d(t,"i",(function(){return S})),n.d(t,"j",(functio [...]
\ No newline at end of file
diff --git a/runtime~main.dfaa07c6.js b/runtime~main.dfaa07c6.js
deleted file mode 100644
index 92cb948..0000000
--- a/runtime~main.dfaa07c6.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(e){function c(c){for(var r,n,d=c[0],o=c[1],b=c[2],u=0,l=[];u<d.length;u++)n=d[u],Object.prototype.hasOwnProperty.call(t,n)&&t[n]&&l.push(t[n][0]),t[n]=0;for(r in o)Object.prototype.hasOwnProperty.call(o,r)&&(e[r]=o[r]);for(i&&i(c);l.length;)l.shift()();return f.push.apply(f,b||[]),a()}function a(){for(var e,c=0;c<f.length;c++){for(var a=f[c],r=!0,n=1;n<a.length;n++){var o=a[n];0!==t[o]&&(r=!1)}r&&(f.splice(c--,1),e=d(d.s=a[0]))}return e}var r={},t={45:0},f=[];function n(e){retu [...]
\ No newline at end of file
diff --git a/search/index.html b/search/index.html
index 9780887..9aca67f 100644
--- a/search/index.html
+++ b/search/index.html
@@ -3,28 +3,28 @@
 <head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-alpha.70">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
 <link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/opensearch.xml">
 <link rel="alternate" type="application/rss+xml" href="/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Search the documentation | Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Apache APISIX™"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docsearch:language" content="en"><meta data-react-helmet="true" name="docsearch:docusaurus_tag" co [...]
-<link rel="preload" href="/styles.f6196f2d.js" as="script">
-<link rel="preload" href="/runtime~main.dfaa07c6.js" as="script">
-<link rel="preload" href="/main.be0eaecb.js" as="script">
-<link rel="preload" href="/1.b3395235.js" as="script">
-<link rel="preload" href="/2.05b0df04.js" as="script">
-<link rel="preload" href="/46.1c9dd603.js" as="script">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Search the documentation | Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Apache APISIX™"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:url" content="https://apisix.apache.org//search"><meta data-react-helmet="true" name="docse [...]
+<link rel="preload" href="/assets/js/styles.69143f42.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.1cc43786.js" as="script">
+<link rel="preload" href="/assets/js/main.e86f8eb4.js" as="script">
+<link rel="preload" href="/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/assets/js/54.b7cce01d.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
-<script src="/styles.f6196f2d.js"></script>
-<script src="/runtime~main.dfaa07c6.js"></script>
-<script src="/main.be0eaecb.js"></script>
-<script src="/1.b3395235.js"></script>
-<script src="/2.05b0df04.js"></script>
-<script src="/46.1c9dd603.js"></script>
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+<script src="/assets/js/styles.69143f42.js"></script>
+<script src="/assets/js/runtime~main.1cc43786.js"></script>
+<script src="/assets/js/main.e86f8eb4.js"></script>
+<script src="/assets/js/1.b21fad17.js"></script>
+<script src="/assets/js/2.c74b4887.js"></script>
+<script src="/assets/js/54.b7cce01d.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/security/index.html b/security/index.html
deleted file mode 100644
index 4542b45..0000000
--- a/security/index.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-alpha.70">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Security | Apache APISIX™</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docsearch:language" content="en"><meta data-react-helmet="true" name="docsearch:version" content="current"><meta data-react-helmet="true" name="docsearch:docusaurus_tag" content="docs-defaul [...]
-<link rel="preload" href="/styles.f6196f2d.js" as="script">
-<link rel="preload" href="/runtime~main.dfaa07c6.js" as="script">
-<link rel="preload" href="/main.be0eaecb.js" as="script">
-<link rel="preload" href="/1.b3395235.js" as="script">
-<link rel="preload" href="/2.05b0df04.js" as="script">
-<link rel="preload" href="/47.ebb97f1e.js" as="script">
-<link rel="preload" href="/50.8a9a9fdc.js" as="script">
-<link rel="preload" href="/935f2afb.cf13d7b3.js" as="script">
-<link rel="preload" href="/17896441.45b06d05.js" as="script">
-<link rel="preload" href="/638581dc.05c618c5.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
-<script src="/styles.f6196f2d.js"></script>
-<script src="/runtime~main.dfaa07c6.js"></script>
-<script src="/main.be0eaecb.js"></script>
-<script src="/1.b3395235.js"></script>
-<script src="/2.05b0df04.js"></script>
-<script src="/47.ebb97f1e.js"></script>
-<script src="/50.8a9a9fdc.js"></script>
-<script src="/935f2afb.cf13d7b3.js"></script>
-<script src="/17896441.45b06d05.js"></script>
-<script src="/638581dc.05c618c5.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/sitemap.xml b/sitemap.xml
index acf0c06..ced1d92 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:mobile="http://www.google.com/schemas/sitemap-mobile/1.0" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://apisix.apache.org/</loc><changefreq>weekly</changefreq><priority>0.5</priority></url> [...]
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:mobile="http://www.google.com/schemas/sitemap-mobile/1.0" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://apisix.apache.org/</loc><changefreq>weekly</changefreq><priority>0.5</priority></url> [...]
\ No newline at end of file
diff --git a/styles.f6196f2d.js b/styles.f6196f2d.js
deleted file mode 100644
index d2b614a..0000000
--- a/styles.f6196f2d.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[0],{108:function(e,n,o){e.exports={searchQueryInput:"searchQueryInput_OSZ_",searchVersionInput:"searchVersionInput_2EOA",searchResultsColumn:"searchResultsColumn_1STd",searchLogoColumn:"searchLogoColumn_Jk0a",algoliaLogo:"algoliaLogo_2MCX",algoliaLogoPathFill:"algoliaLogoPathFill_2KWz",searchResultItem:"searchResultItem_j4Nh",searchResultItemHeading:"searchResultItemHeading_3X-3",searchResultItemPath:"searchResultItemPath_2Nc_",searchR [...]
\ No newline at end of file
diff --git a/subscribe-guide/index.html b/subscribe-guide/index.html
deleted file mode 100644
index f0af28b..0000000
--- a/subscribe-guide/index.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-alpha.70">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Subscribe Guide | Apache APISIX™</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docsearch:language" content="en"><meta data-react-helmet="true" name="docsearch:version" content="current"><meta data-react-helmet="true" name="docsearch:docusaurus_tag" content="docs [...]
-<link rel="preload" href="/styles.f6196f2d.js" as="script">
-<link rel="preload" href="/runtime~main.dfaa07c6.js" as="script">
-<link rel="preload" href="/main.be0eaecb.js" as="script">
-<link rel="preload" href="/1.b3395235.js" as="script">
-<link rel="preload" href="/2.05b0df04.js" as="script">
-<link rel="preload" href="/47.ebb97f1e.js" as="script">
-<link rel="preload" href="/50.8a9a9fdc.js" as="script">
-<link rel="preload" href="/935f2afb.cf13d7b3.js" as="script">
-<link rel="preload" href="/17896441.45b06d05.js" as="script">
-<link rel="preload" href="/2da51850.b6eaa949.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
-<script src="/styles.f6196f2d.js"></script>
-<script src="/runtime~main.dfaa07c6.js"></script>
-<script src="/main.be0eaecb.js"></script>
-<script src="/1.b3395235.js"></script>
-<script src="/2.05b0df04.js"></script>
-<script src="/47.ebb97f1e.js"></script>
-<script src="/50.8a9a9fdc.js"></script>
-<script src="/935f2afb.cf13d7b3.js"></script>
-<script src="/17896441.45b06d05.js"></script>
-<script src="/2da51850.b6eaa949.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/team/index.html b/team/index.html
index 5893d02..d277e1e 100644
--- a/team/index.html
+++ b/team/index.html
@@ -3,30 +3,30 @@
 <head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-alpha.70">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
 <link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/opensearch.xml">
 <link rel="alternate" type="application/rss+xml" href="/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Apache APISIX™"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docsearch:language" content="en"><meta data-react-helmet="true" name="docsearch:docusaurus_tag" content="default"><meta data- [...]
-<link rel="preload" href="/styles.f6196f2d.js" as="script">
-<link rel="preload" href="/runtime~main.dfaa07c6.js" as="script">
-<link rel="preload" href="/main.be0eaecb.js" as="script">
-<link rel="preload" href="/1.b3395235.js" as="script">
-<link rel="preload" href="/2.05b0df04.js" as="script">
-<link rel="preload" href="/3.538bc209.js" as="script">
-<link rel="preload" href="/859cc09f.67740ecc.js" as="script">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Apache APISIX™"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:url" content="https://apisix.apache.org//team"><meta data-react-helmet="true" name="docsearch:language" content="en">< [...]
+<link rel="preload" href="/assets/js/styles.69143f42.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.1cc43786.js" as="script">
+<link rel="preload" href="/assets/js/main.e86f8eb4.js" as="script">
+<link rel="preload" href="/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/assets/js/3.e5911a24.js" as="script">
+<link rel="preload" href="/assets/js/859cc09f.fd7722bd.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
-<script src="/styles.f6196f2d.js"></script>
-<script src="/runtime~main.dfaa07c6.js"></script>
-<script src="/main.be0eaecb.js"></script>
-<script src="/1.b3395235.js"></script>
-<script src="/2.05b0df04.js"></script>
-<script src="/3.538bc209.js"></script>
-<script src="/859cc09f.67740ecc.js"></script>
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+<script src="/assets/js/styles.69143f42.js"></script>
+<script src="/assets/js/runtime~main.1cc43786.js"></script>
+<script src="/assets/js/main.e86f8eb4.js"></script>
+<script src="/assets/js/1.b21fad17.js"></script>
+<script src="/assets/js/2.c74b4887.js"></script>
+<script src="/assets/js/3.e5911a24.js"></script>
+<script src="/assets/js/859cc09f.fd7722bd.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/404.html b/zh/404.html
new file mode 100644
index 0000000..59ce28f
--- /dev/null
+++ b/zh/404.html
@@ -0,0 +1,24 @@
+<!doctype html>
+<html lang="zh">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
+<link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/zh/opensearch.xml">
+<link rel="alternate" type="application/rss+xml" href="/zh/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Page Not Found | Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Page Not Found | Apache APISIX™"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:url" content="https://apisix.apache.org//zh/404.html"><meta data-react-helmet="true" [...]
+<link rel="preload" href="/zh/assets/js/styles.d25a02cf.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.c157ebee.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.20ae8921.js" as="script">
+</head>
+<body>
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+<script src="/zh/assets/js/styles.d25a02cf.js"></script>
+<script src="/zh/assets/js/runtime~main.c157ebee.js"></script>
+<script src="/zh/assets/js/main.20ae8921.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/styles.6b3ccb20.css b/zh/assets/css/styles.545fc2a3.css
similarity index 56%
rename from styles.6b3ccb20.css
rename to zh/assets/css/styles.545fc2a3.css
index 5eeaf62..cba029a 100644
--- a/styles.6b3ccb20.css
+++ b/zh/assets/css/styles.545fc2a3.css
@@ -1 +1 @@
-.row .col,img{max-width:100%}.markdown li,body{word-wrap:break-word}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.button,.close{-webkit-appearance:none;cursor:pointer}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button--link,a{-webkit-text-decoration:var(--ifm-link-decoration)}.button,.close,.menu__link,.navbar__link,a{cursor:pointer}.tabs__item,hr,img{box-sizing:content-box}.react-toggle,html{-webkit-tap-hig [...]
\ No newline at end of file
+.row .col,img{max-width:100%}.markdown li,body{word-wrap:break-word}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.button,.close{-webkit-appearance:none;cursor:pointer}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button--link,a{-webkit-text-decoration:var(--ifm-link-decoration)}.button,.close,.menu__link,.navbar__link,a{cursor:pointer}.tabs__item,hr,img{box-sizing:content-box}.react-toggle,html{-webkit-tap-hig [...]
\ No newline at end of file
diff --git a/zh/assets/images/release_flow-7cedd869bc884c40bf9f9f1ce8dded9e.png b/zh/assets/images/release_flow-7cedd869bc884c40bf9f9f1ce8dded9e.png
new file mode 100644
index 0000000..ee3d594
Binary files /dev/null and b/zh/assets/images/release_flow-7cedd869bc884c40bf9f9f1ce8dded9e.png differ
diff --git a/zh/assets/js/1.b21fad17.js b/zh/assets/js/1.b21fad17.js
new file mode 100644
index 0000000..74d50e6
--- /dev/null
+++ b/zh/assets/js/1.b21fad17.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[1],{126:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(158);Object.defineProperty(t,"useThemeConfig",{enumerable:!0,get:function(){return r.useThemeConfig}});var o=n(185);Object.defineProperty(t,"useAlternatePageUtils",{enumerable:!0,get:function(){return o.useAlternatePageUtils}});var i=n(186);Object.defineProperty(t,"docVersionSearchTag",{enumerable:!0,get:function(){return i.docVersionSearchTag [...]
\ No newline at end of file
diff --git a/zh/assets/js/12e5767f.d61c8e43.js b/zh/assets/js/12e5767f.d61c8e43.js
new file mode 100644
index 0000000..6960bcb
--- /dev/null
+++ b/zh/assets/js/12e5767f.d61c8e43.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{125:function(e,t,r){"use strict";r.d(t,"a",(function(){return u})),r.d(t,"b",(function(){return h}));var n=r(0),a=r.n(n);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))) [...]
\ No newline at end of file
diff --git a/17896441.45b06d05.js b/zh/assets/js/17896441.ab569ce4.js
similarity index 68%
rename from 17896441.45b06d05.js
rename to zh/assets/js/17896441.ab569ce4.js
index c56f5e1..07efa83 100644
--- a/17896441.45b06d05.js
+++ b/zh/assets/js/17896441.ab569ce4.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{113:function(e,t,a){"use strict";a.r(t);var n=a(0),l=a.n(n),r=a(24),c=a(119),i=a(22),o=a(124),m=a(121);var s=function(e){var t=e.metadata;return l.a.createElement("nav",{className:"pagination-nav","aria-label":"Blog list page navigation"},l.a.createElement("div",{className:"pagination-nav__item"},t.previous&&l.a.createElement(m.a,{className:"pagination-nav__link",to:t.previous.permalink},l.a.createElement("div",{className:"paginati [...]
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{120:function(e,t,a){"use strict";a.r(t);var n=a(0),l=a.n(n),r=a(24),c=a(126),i=a(17),o=a(132),m=a(128);var s=function(e){var t=e.metadata;return l.a.createElement("nav",{className:"pagination-nav","aria-label":"Blog list page navigation"},l.a.createElement("div",{className:"pagination-nav__item"},t.previous&&l.a.createElement(m.a,{className:"pagination-nav__link",to:t.previous.permalink},l.a.createElement("div",{className:"paginati [...]
\ No newline at end of file
diff --git a/17dc512b.e743caaf.js b/zh/assets/js/17dc512b.888d5c12.js
similarity index 70%
rename from 17dc512b.e743caaf.js
rename to zh/assets/js/17dc512b.888d5c12.js
index 67933a3..efd9ea8 100644
--- a/17dc512b.e743caaf.js
+++ b/zh/assets/js/17dc512b.888d5c12.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{118:function(e,t,r){"use strict";r.d(t,"a",(function(){return s})),r.d(t,"b",(function(){return y}));var n=r(0),a=r.n(n);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))) [...]
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{125:function(e,t,r){"use strict";r.d(t,"a",(function(){return s})),r.d(t,"b",(function(){return y}));var n=r(0),a=r.n(n);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))) [...]
\ No newline at end of file
diff --git a/zh/assets/js/1b2ed0ef.1ea9785f.js b/zh/assets/js/1b2ed0ef.1ea9785f.js
new file mode 100644
index 0000000..c3884b5
--- /dev/null
+++ b/zh/assets/js/1b2ed0ef.1ea9785f.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{125:function(e,t,n){"use strict";n.d(t,"a",(function(){return f})),n.d(t,"b",(function(){return m}));var r=n(0),o=n.n(r);function c(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))) [...]
\ No newline at end of file
diff --git a/zh/assets/js/1be5d2e8.8711092b.js b/zh/assets/js/1be5d2e8.8711092b.js
new file mode 100644
index 0000000..b17e6ff
--- /dev/null
+++ b/zh/assets/js/1be5d2e8.8711092b.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{125:function(e,t,r){"use strict";r.d(t,"a",(function(){return u})),r.d(t,"b",(function(){return h}));var n=r(0),a=r.n(n);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))) [...]
\ No newline at end of file
diff --git a/zh/assets/js/1be78505.0c1819df.js b/zh/assets/js/1be78505.0c1819df.js
new file mode 100644
index 0000000..3d93535
--- /dev/null
+++ b/zh/assets/js/1be78505.0c1819df.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{121:function(e,a,t){"use strict";t.r(a);var n=t(0),c=t.n(n),i=t(125),l=t(17),r=t(27),o=t(129),s=t(3),u=t(7),b=t(127),d=t(126),m=t(161),p=t(167),f=t(168),v=t(166),h=t(128),E=t(146),O=t(170),j=t(173),k=t(172),C=t(76),_=t.n(C),g=t(169);var N=function e(a,t){return"link"===a.type?Object(d.isSamePath)(a.href,t):"category"===a.type&&a.items.some((function(a){return e(a,t)}))};function I(e){var a,t,i,l=e.item,r=e.onItemClick,o=e.collapsi [...]
\ No newline at end of file
diff --git a/zh/assets/js/1c89ab3b.19ea93a0.js b/zh/assets/js/1c89ab3b.19ea93a0.js
new file mode 100644
index 0000000..cb22810
--- /dev/null
+++ b/zh/assets/js/1c89ab3b.19ea93a0.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[11],{125:function(e,t,a){"use strict";a.d(t,"a",(function(){return h})),a.d(t,"b",(function(){return m}));var n=a(0),r=a.n(n);function s(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})) [...]
\ No newline at end of file
diff --git a/zh/assets/js/2.c74b4887.js b/zh/assets/js/2.c74b4887.js
new file mode 100644
index 0000000..732bc1d
--- /dev/null
+++ b/zh/assets/js/2.c74b4887.js
@@ -0,0 +1,2 @@
+/*! For license information please see 2.c74b4887.js.LICENSE.txt */
+(window.webpackJsonp=window.webpackJsonp||[]).push([[2],{129:function(e,t,a){"use strict";var n=a(0),r=a.n(n),c=a(127),o=a(63),l=a.n(o);var i=function(){return r.a.createElement("nav",{"aria-label":"Skip navigation links"},r.a.createElement("button",{type:"button",tabIndex:0,className:l.a.skipToContent,onKeyDown:function(e){if(13===e.keyCode){document.activeElement.blur();var t=document.querySelector("main:first-of-type");t&&t.scrollIntoView()}}},"Skip to main content"))},s=a(126),u=a(16 [...]
\ No newline at end of file
diff --git a/2.05b0df04.js.LICENSE.txt b/zh/assets/js/2.c74b4887.js.LICENSE.txt
similarity index 100%
rename from 2.05b0df04.js.LICENSE.txt
rename to zh/assets/js/2.c74b4887.js.LICENSE.txt
diff --git a/zh/assets/js/25b7c3f2.1e053d90.js b/zh/assets/js/25b7c3f2.1e053d90.js
new file mode 100644
index 0000000..1756f2d
--- /dev/null
+++ b/zh/assets/js/25b7c3f2.1e053d90.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{139:function(e,t,r){"use strict";var n=r(0);function a(){return(a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}function i(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t) [...]
\ No newline at end of file
diff --git a/zh/assets/js/2d8fe9ee.fbf876c8.js b/zh/assets/js/2d8fe9ee.fbf876c8.js
new file mode 100644
index 0000000..e8136a3
--- /dev/null
+++ b/zh/assets/js/2d8fe9ee.fbf876c8.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{80:function(e){e.exports=JSON.parse('{"title":"Recent posts","items":[{"title":"Stable Product Delivery with Cypress","permalink":"/zh/blog/2021/02/08/stable-product-delivery-with-cypress"},{"title":"Run Ingress APISIX on Amazon EKS","permalink":"/zh/blog/2021/01/21/run-ingress-apisix-on-amazon-eks"},{"title":"\u521d\u63a2 Kubernetes Service APIs","permalink":"/zh/blog/2020/12/18/a-first-look-at-kubernetes-service-api"},{"title":" [...]
\ No newline at end of file
diff --git a/3.538bc209.js b/zh/assets/js/3.e5911a24.js
similarity index 98%
rename from 3.538bc209.js
rename to zh/assets/js/3.e5911a24.js
index c01792f..a39d05b 100644
--- a/3.538bc209.js
+++ b/zh/assets/js/3.e5911a24.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{133:function(e,t,r){"use strict";(function(e){var n=r(26),i=r(0),a=r.n(i),o=r(190),s=r.n(o),c=r(191),l=r(192),u=r(206),h=r(29),f=r.n(h);function d(){return(d=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}var p=function(e,t){for(var r=[e[0]],n=0,i=t.length;n<i;n+=1)r.push(t[n],e[n+1]);return r},g [...]
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{134:function(e,t,r){"use strict";(function(e){var n=r(26),i=r(0),a=r.n(i),o=r(202),s=r.n(o),c=r(203),l=r(204),u=r(218),h=r(29),f=r.n(h);function d(){return(d=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}var p=function(e,t){for(var r=[e[0]],n=0,i=t.length;n<i;n+=1)r.push(t[n],e[n+1]);return r},g [...]
\ No newline at end of file
diff --git a/zh/assets/js/30788500.8f19702c.js b/zh/assets/js/30788500.8f19702c.js
new file mode 100644
index 0000000..868562b
--- /dev/null
+++ b/zh/assets/js/30788500.8f19702c.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[14],{125:function(e,n,t){"use strict";t.d(n,"a",(function(){return s})),t.d(n,"b",(function(){return m}));var r=t(0),o=t.n(r);function c(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable})) [...]
\ No newline at end of file
diff --git a/37e3b3ea.dca7b1f0.js b/zh/assets/js/37e3b3ea.6fa5c709.js
similarity index 71%
rename from 37e3b3ea.dca7b1f0.js
rename to zh/assets/js/37e3b3ea.6fa5c709.js
index 956f6ad..2a83cab 100644
--- a/37e3b3ea.dca7b1f0.js
+++ b/zh/assets/js/37e3b3ea.6fa5c709.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{118:function(e,t,r){"use strict";r.d(t,"a",(function(){return l})),r.d(t,"b",(function(){return m}));var n=r(0),o=r.n(n);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})) [...]
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{125:function(e,t,r){"use strict";r.d(t,"a",(function(){return l})),r.d(t,"b",(function(){return m}));var n=r(0),o=r.n(n);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})) [...]
\ No newline at end of file
diff --git a/zh/assets/js/3a332aed.00986c3a.js b/zh/assets/js/3a332aed.00986c3a.js
new file mode 100644
index 0000000..fb4d5a3
--- /dev/null
+++ b/zh/assets/js/3a332aed.00986c3a.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[16],{83:function(o){o.exports=JSON.parse('{"permalink":"/zh/blog","page":1,"postsPerPage":10,"totalPages":1,"totalCount":5,"previousPage":null,"nextPage":null,"blogDescription":"Blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
diff --git a/zh/assets/js/3dc9f306.409bfade.js b/zh/assets/js/3dc9f306.409bfade.js
new file mode 100644
index 0000000..a7971b7
--- /dev/null
+++ b/zh/assets/js/3dc9f306.409bfade.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[17],{125:function(e,t,n){"use strict";n.d(t,"a",(function(){return p})),n.d(t,"b",(function(){return b}));var r=n(0),o=n.n(r);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})) [...]
\ No newline at end of file
diff --git a/4.ce841e81.js b/zh/assets/js/4.a448f392.js
similarity index 74%
rename from 4.ce841e81.js
rename to zh/assets/js/4.a448f392.js
index f36e1fd..c165b5e 100644
--- a/4.ce841e81.js
+++ b/zh/assets/js/4.a448f392.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[4],{118:function(e,t,a){"use strict";a.d(t,"a",(function(){return m})),a.d(t,"b",(function(){return d}));var n=a(0),r=a.n(n);function o(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))) [...]
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[4],{125:function(e,t,a){"use strict";a.d(t,"a",(function(){return m})),a.d(t,"b",(function(){return d}));var n=a(0),r=a.n(n);function o(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))) [...]
\ No newline at end of file
diff --git a/zh/assets/js/41b4926b.702246a9.js b/zh/assets/js/41b4926b.702246a9.js
new file mode 100644
index 0000000..f7a5884
--- /dev/null
+++ b/zh/assets/js/41b4926b.702246a9.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[18],{125:function(e,t,a){"use strict";a.d(t,"a",(function(){return b})),a.d(t,"b",(function(){return m}));var r=a(0),i=a.n(r);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function p(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})) [...]
\ No newline at end of file
diff --git a/zh/assets/js/47e0bf55.1e18a655.js b/zh/assets/js/47e0bf55.1e18a655.js
new file mode 100644
index 0000000..34b4237
--- /dev/null
+++ b/zh/assets/js/47e0bf55.1e18a655.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[19],{125:function(e,t,n){"use strict";n.d(t,"a",(function(){return p})),n.d(t,"b",(function(){return d}));var a=n(0),r=n.n(a);function s(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})) [...]
\ No newline at end of file
diff --git a/zh/assets/js/47f8a22a.b9d7e773.js b/zh/assets/js/47f8a22a.b9d7e773.js
new file mode 100644
index 0000000..91055c3
--- /dev/null
+++ b/zh/assets/js/47f8a22a.b9d7e773.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[20,34],{137:function(e,t,n){"use strict";const r=(e,{target:t=document.body}={})=>{const n=document.createElement("textarea"),r=document.activeElement;n.value=e,n.setAttribute("readonly",""),n.style.contain="strict",n.style.position="absolute",n.style.left="-9999px",n.style.fontSize="12pt";const a=document.getSelection();let o=!1;a.rangeCount>0&&(o=a.getRangeAt(0)),t.append(n),n.select(),n.selectionStart=0,n.selectionEnd=e.length;let i [...]
\ No newline at end of file
diff --git a/zh/assets/js/4eed9ed2.6483805d.js b/zh/assets/js/4eed9ed2.6483805d.js
new file mode 100644
index 0000000..4650ad9
--- /dev/null
+++ b/zh/assets/js/4eed9ed2.6483805d.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[21],{125:function(e,t,r){"use strict";r.d(t,"a",(function(){return u})),r.d(t,"b",(function(){return m}));var a=r(0),n=r.n(a);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})) [...]
\ No newline at end of file
diff --git a/zh/assets/js/50facf8e.d92bb643.js b/zh/assets/js/50facf8e.d92bb643.js
new file mode 100644
index 0000000..955e052
--- /dev/null
+++ b/zh/assets/js/50facf8e.d92bb643.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[22],{125:function(e,t,r){"use strict";r.d(t,"a",(function(){return p})),r.d(t,"b",(function(){return d}));var n=r(0),i=r.n(n);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})) [...]
\ No newline at end of file
diff --git a/zh/assets/js/514de2af.c87083ac.js b/zh/assets/js/514de2af.c87083ac.js
new file mode 100644
index 0000000..891bb4e
--- /dev/null
+++ b/zh/assets/js/514de2af.c87083ac.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[23],{125:function(e,t,a){"use strict";a.d(t,"a",(function(){return h})),a.d(t,"b",(function(){return m}));var n=a(0),r=a.n(n);function s(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})) [...]
\ No newline at end of file
diff --git a/46.1c9dd603.js b/zh/assets/js/54.b7cce01d.js
similarity index 96%
rename from 46.1c9dd603.js
rename to zh/assets/js/54.b7cce01d.js
index 0cb048a..ebe4aa6 100644
--- a/46.1c9dd603.js
+++ b/zh/assets/js/54.b7cce01d.js
@@ -1,2 +1,2 @@
-/*! For license information please see 46.1c9dd603.js.LICENSE.txt */
-(window.webpackJsonp=window.webpackJsonp||[]).push([[46],{107:function(e,t,n){"use strict";n.r(t);var r=n(0),i=n.n(r),a=n(205),s=n.n(a),c=n(194),u=n.n(c),o=n(120),f=n(24),h=n(121),l=n(10),m=n(119),d=n(22),v=n(122),p=n(153),g=n(123),y=n(108),R=n.n(y);var F=function(e){var t=e.docsSearchVersionsHelpers,n=Object.entries(t.allDocsData).filter((function(e){return e[1].versions.length>1}));return i.a.createElement("div",{className:Object(o.a)("col","col--3","padding-left--none",R.a.searchVersi [...]
\ No newline at end of file
+/*! For license information please see 54.b7cce01d.js.LICENSE.txt */
+(window.webpackJsonp=window.webpackJsonp||[]).push([[54],{114:function(e,t,n){"use strict";n.r(t);var r=n(0),i=n.n(r),a=n(217),s=n.n(a),c=n(206),u=n.n(c),o=n(127),f=n(24),h=n(128),l=n(11),m=n(126),d=n(17),v=n(130),p=n(163),g=n(129),y=n(115),R=n.n(y);var F=function(e){var t=e.docsSearchVersionsHelpers,n=Object.entries(t.allDocsData).filter((function(e){return e[1].versions.length>1}));return i.a.createElement("div",{className:Object(o.a)("col","col--3","padding-left--none",R.a.searchVersi [...]
\ No newline at end of file
diff --git a/46.1c9dd603.js.LICENSE.txt b/zh/assets/js/54.b7cce01d.js.LICENSE.txt
similarity index 100%
rename from 46.1c9dd603.js.LICENSE.txt
rename to zh/assets/js/54.b7cce01d.js.LICENSE.txt
diff --git a/zh/assets/js/55.e6e1e1c1.js b/zh/assets/js/55.e6e1e1c1.js
new file mode 100644
index 0000000..d8ab90c
--- /dev/null
+++ b/zh/assets/js/55.e6e1e1c1.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[55,58],{125:function(e,t,n){"use strict";n.d(t,"a",(function(){return p})),n.d(t,"b",(function(){return f}));var r=n(0),a=n.n(r);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable [...]
\ No newline at end of file
diff --git a/48.cfa52399.js b/zh/assets/js/56.56a582f4.js
similarity index 99%
rename from 48.cfa52399.js
rename to zh/assets/js/56.56a582f4.js
index f4ee5fa..fbd33d3 100644
--- a/48.cfa52399.js
+++ b/zh/assets/js/56.56a582f4.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[48],{213:function(e,t,r){"use strict";function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t,r){var a=t.initialState;return{getState:func [...]
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[56],{225:function(e,t,r){"use strict";function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t,r){var a=t.initialState;return{getState:func [...]
\ No newline at end of file
diff --git a/49.f29e5dd3.js b/zh/assets/js/57.ff9147f8.js
similarity index 62%
rename from 49.f29e5dd3.js
rename to zh/assets/js/57.ff9147f8.js
index b961a7c..e9d92f7 100644
--- a/49.f29e5dd3.js
+++ b/zh/assets/js/57.ff9147f8.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[49],{212:function(n,i,o){"use strict";o.r(i);var r=o(62);for(var t in r)["default"].indexOf(t)<0&&function(n){o.d(i,n,(function(){return r[n]}))}(t)}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[57],{224:function(n,i,o){"use strict";o.r(i);var r=o(62);for(var t in r)["default"].indexOf(t)<0&&function(n){o.d(i,n,(function(){return r[n]}))}(t)}}]);
\ No newline at end of file
diff --git a/50.8a9a9fdc.js b/zh/assets/js/58.79cc1bdb.js
similarity index 76%
rename from 50.8a9a9fdc.js
rename to zh/assets/js/58.79cc1bdb.js
index 5bb8d3c..87abaca 100644
--- a/50.8a9a9fdc.js
+++ b/zh/assets/js/58.79cc1bdb.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[50],{147:function(e,t,a){"use strict";a.r(t);var n=a(0),o=a.n(n),l=a(123);t.default=function(){return o.a.createElement(l.a,{title:"Page Not Found"},o.a.createElement("main",{className:"container margin-vert--xl"},o.a.createElement("div",{className:"row"},o.a.createElement("div",{className:"col col--6 col--offset-3"},o.a.createElement("h1",{className:"hero__title"},"Page Not Found"),o.a.createElement("p",null,"We could not find what yo [...]
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[58],{157:function(e,t,a){"use strict";a.r(t);var n=a(0),o=a.n(n),l=a(129);t.default=function(){return o.a.createElement(l.a,{title:"Page Not Found"},o.a.createElement("main",{className:"container margin-vert--xl"},o.a.createElement("div",{className:"row"},o.a.createElement("div",{className:"col col--6 col--offset-3"},o.a.createElement("h1",{className:"hero__title"},"Page Not Found"),o.a.createElement("p",null,"We could not find what yo [...]
\ No newline at end of file
diff --git a/51.b0dede12.js b/zh/assets/js/59.654079dd.js
similarity index 98%
rename from 51.b0dede12.js
rename to zh/assets/js/59.654079dd.js
index 1fb5777..c83c172 100644
--- a/51.b0dede12.js
+++ b/zh/assets/js/59.654079dd.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[51],{214:function(t,e,n){"use strict";var s=n(3),a=n(7),i=n(4);n(1);function o(t,e){return t.replace(new RegExp("(^|\\s)"+e+"(?:\\s|$)","g"),"$1").replace(/\s+/g," ").replace(/^\s*|\s*$/g,"")}var r=n(0),p=n.n(r),l=n(25),u=n.n(l),c=!1,d=p.a.createContext(null),E="unmounted",f="exited",h="entering",x="entered",m="exiting",v=function(t){function e(e,n){var s;s=t.call(this,e,n)||this;var a,i=n&&!n.isMounting?e.enter:e.appear;return s.appea [...]
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[59],{226:function(t,e,n){"use strict";var s=n(3),a=n(7),i=n(4);n(1);function o(t,e){return t.replace(new RegExp("(^|\\s)"+e+"(?:\\s|$)","g"),"$1").replace(/\s+/g," ").replace(/^\s*|\s*$/g,"")}var r=n(0),p=n.n(r),l=n(25),u=n.n(l),c=!1,d=p.a.createContext(null),E="unmounted",f="exited",h="entering",x="entered",m="exiting",v=function(t){function e(e,n){var s;s=t.call(this,e,n)||this;var a,i=n&&!n.isMounting?e.enter:e.appear;return s.appea [...]
\ No newline at end of file
diff --git a/zh/assets/js/5bb67ffc.5facfc0f.js b/zh/assets/js/5bb67ffc.5facfc0f.js
new file mode 100644
index 0000000..67bbe3e
--- /dev/null
+++ b/zh/assets/js/5bb67ffc.5facfc0f.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[24],{125:function(e,t,r){"use strict";r.d(t,"a",(function(){return u})),r.d(t,"b",(function(){return m}));var a=r(0),n=r.n(a);function b(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})) [...]
\ No newline at end of file
diff --git a/zh/assets/js/66fbb9c2.5fc56aad.js b/zh/assets/js/66fbb9c2.5fc56aad.js
new file mode 100644
index 0000000..fc63b9d
--- /dev/null
+++ b/zh/assets/js/66fbb9c2.5fc56aad.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[25],{125:function(e,t,r){"use strict";r.d(t,"a",(function(){return l})),r.d(t,"b",(function(){return f}));var n=r(0),a=r.n(n);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})) [...]
\ No newline at end of file
diff --git a/zh/assets/js/6f9b6084.47c7a420.js b/zh/assets/js/6f9b6084.47c7a420.js
new file mode 100644
index 0000000..e2d5eec
--- /dev/null
+++ b/zh/assets/js/6f9b6084.47c7a420.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[26],{125:function(e,t,n){"use strict";n.d(t,"a",(function(){return f})),n.d(t,"b",(function(){return b}));var r=n(0),o=n.n(r);function c(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})) [...]
\ No newline at end of file
diff --git a/zh/assets/js/749ed826.21ee0429.js b/zh/assets/js/749ed826.21ee0429.js
new file mode 100644
index 0000000..6ebe813
--- /dev/null
+++ b/zh/assets/js/749ed826.21ee0429.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[27],{125:function(e,t,n){"use strict";n.d(t,"a",(function(){return b})),n.d(t,"b",(function(){return m}));var a=n(0),r=n.n(a);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})) [...]
\ No newline at end of file
diff --git a/zh/assets/js/7af3052c.0d0ad0ce.js b/zh/assets/js/7af3052c.0d0ad0ce.js
new file mode 100644
index 0000000..753264a
--- /dev/null
+++ b/zh/assets/js/7af3052c.0d0ad0ce.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[28],{125:function(e,a,t){"use strict";t.d(a,"a",(function(){return d})),t.d(a,"b",(function(){return u}));var n=t(0),i=t.n(n);function r(e,a,t){return a in e?Object.defineProperty(e,a,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[a]=t,e}function s(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);a&&(n=n.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})) [...]
\ No newline at end of file
diff --git a/7e37206e.e303dbe6.js b/zh/assets/js/7e37206e.7992680e.js
similarity index 93%
rename from 7e37206e.e303dbe6.js
rename to zh/assets/js/7e37206e.7992680e.js
index ad29f59..9a5568e 100644
--- a/7e37206e.e303dbe6.js
+++ b/zh/assets/js/7e37206e.7992680e.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[23],{140:function(e,t,a){"use strict";var n=a(0);function r(){return(r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n])}return e}).apply(this,arguments)}function i(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},i=Object.keys(e);for(n=0;n<i.length;n++)a=i[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t) [...]
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[29],{150:function(e,t,a){"use strict";var n=a(0);function r(){return(r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n])}return e}).apply(this,arguments)}function i(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},i=Object.keys(e);for(n=0;n<i.length;n++)a=i[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t) [...]
\ No newline at end of file
diff --git a/zh/assets/js/7ecc8185.2402dced.js b/zh/assets/js/7ecc8185.2402dced.js
new file mode 100644
index 0000000..4bebc90
--- /dev/null
+++ b/zh/assets/js/7ecc8185.2402dced.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[30],{97:function(e){e.exports=JSON.parse('{"permalink":"/zh/events","page":1,"postsPerPage":10,"totalPages":1,"totalCount":5,"previousPage":null,"nextPage":null,"blogDescription":"Blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
diff --git a/859cc09f.67740ecc.js b/zh/assets/js/859cc09f.feab14f8.js
similarity index 96%
rename from 859cc09f.67740ecc.js
rename to zh/assets/js/859cc09f.feab14f8.js
index 9382b32..eea31bd 100644
--- a/859cc09f.67740ecc.js
+++ b/zh/assets/js/859cc09f.feab14f8.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[25],{112:function(e,t,r){"use strict";r.r(t);var n=r(0),a=r.n(n),o=r(133),i=r(123),l=r(22),c=r(141);function p(){return(p=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}function m(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++ [...]
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[31],{119:function(e,t,r){"use strict";r.r(t);var n=r(0),a=r.n(n),o=r(134),i=r(129),l=r(17),c=r(151);function p(){return(p=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}function m(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++ [...]
\ No newline at end of file
diff --git a/zh/assets/js/8e784bf3.b5256bf0.js b/zh/assets/js/8e784bf3.b5256bf0.js
new file mode 100644
index 0000000..3bcec8f
--- /dev/null
+++ b/zh/assets/js/8e784bf3.b5256bf0.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[32],{125:function(e,t,n){"use strict";n.d(t,"a",(function(){return m})),n.d(t,"b",(function(){return d}));var o=n(0),r=n.n(o);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})) [...]
\ No newline at end of file
diff --git a/zh/assets/js/935f2afb.2a534bfd.js b/zh/assets/js/935f2afb.2a534bfd.js
new file mode 100644
index 0000000..16bea14
--- /dev/null
+++ b/zh/assets/js/935f2afb.2a534bfd.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[33],{99:function(e){e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","isLast":true,"docsSidebars":{"docs":[{"collapsed":true,"type":"category","label":"General","items":[{"type":"link","label":"Security","href":"/zh/docs/general/security"},{"type":"link","label":"Subscribe Guide","href":"/zh/docs/general/subscribe-guide"},{"type":"link","label":"Contributor Guide","href":"/zh/docs/general/contributor-guide [...]
\ No newline at end of file
diff --git a/zh/assets/js/98c69322.bcfd2dda.js b/zh/assets/js/98c69322.bcfd2dda.js
new file mode 100644
index 0000000..66dd50c
--- /dev/null
+++ b/zh/assets/js/98c69322.bcfd2dda.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[34],{139:function(e,t,r){"use strict";var n=r(0);function a(){return(a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}function i(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t) [...]
\ No newline at end of file
diff --git a/zh/assets/js/a4a2cefa.309c52fd.js b/zh/assets/js/a4a2cefa.309c52fd.js
new file mode 100644
index 0000000..e9176ae
--- /dev/null
+++ b/zh/assets/js/a4a2cefa.309c52fd.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[35],{100:function(e,t,r){"use strict";r.r(t),r.d(t,"frontMatter",(function(){return l})),r.d(t,"metadata",(function(){return i})),r.d(t,"toc",(function(){return s})),r.d(t,"default",(function(){return p}));var a=r(3),n=r(7),b=(r(0),r(125)),l={title:"\u521d\u63a2 Kubernetes Service APIs",author:"Wei Jin",authorURL:"https://github.com/gxthrj",authorImageURL:"https://avatars2.githubusercontent.com/u/4413028?s=400&u=e140a6d2bf19c426da6498b [...]
\ No newline at end of file
diff --git a/zh/assets/js/a6641250.a8f6a2f7.js b/zh/assets/js/a6641250.a8f6a2f7.js
new file mode 100644
index 0000000..b4719d7
--- /dev/null
+++ b/zh/assets/js/a6641250.a8f6a2f7.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[36],{101:function(e,t,r){"use strict";r.r(t),r.d(t,"frontMatter",(function(){return c})),r.d(t,"metadata",(function(){return i})),r.d(t,"toc",(function(){return u})),r.d(t,"default",(function(){return l}));var n=r(3),o=r(7),a=(r(0),r(125)),c={title:"New website for Apache APISIX",author:"juzhiyuan",authorURL:"https://github.com/juzhiyuan",authorImageURL:"https://avatars3.githubusercontent.com/u/2106987?s=460&u=f92e880ce95fe1fee18becd0a [...]
\ No newline at end of file
diff --git a/a6aa9e1f.0a850dbe.js b/zh/assets/js/a6aa9e1f.c641128b.js
similarity index 81%
rename from a6aa9e1f.0a850dbe.js
rename to zh/assets/js/a6aa9e1f.c641128b.js
index 6b371bd..26fb4ff 100644
--- a/a6aa9e1f.0a850dbe.js
+++ b/zh/assets/js/a6aa9e1f.c641128b.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[30],{115:function(a,e,t){"use strict";t.r(e);var n=t(0),i=t.n(n),l=t(22),r=t(123),c=t(160),m=t(121);var s=function(a){var e=a.metadata,t=e.previousPage,n=e.nextPage;return i.a.createElement("nav",{className:"pagination-nav","aria-label":"Blog list page navigation"},i.a.createElement("div",{className:"pagination-nav__item"},t&&i.a.createElement(m.a,{className:"pagination-nav__link",to:t},i.a.createElement("div",{className:"pagination-na [...]
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[37],{122:function(a,e,t){"use strict";t.r(e);var n=t(0),i=t.n(n),l=t(17),r=t(129),c=t(174),m=t(128);var s=function(a){var e=a.metadata,t=e.previousPage,n=e.nextPage;return i.a.createElement("nav",{className:"pagination-nav","aria-label":"Blog list page navigation"},i.a.createElement("div",{className:"pagination-nav__item"},t&&i.a.createElement(m.a,{className:"pagination-nav__link",to:t},i.a.createElement("div",{className:"pagination-na [...]
\ No newline at end of file
diff --git a/zh/assets/js/adbb350b.cfedb21c.js b/zh/assets/js/adbb350b.cfedb21c.js
new file mode 100644
index 0000000..59add2f
--- /dev/null
+++ b/zh/assets/js/adbb350b.cfedb21c.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[38],{104:function(e,t,r){"use strict";r.r(t),r.d(t,"frontMatter",(function(){return i})),r.d(t,"metadata",(function(){return c})),r.d(t,"toc",(function(){return l})),r.d(t,"default",(function(){return b}));var n=r(3),o=r(7),a=(r(0),r(125)),i={id:"contributor-guide",title:"Contributor Guide"},c={unversionedId:"contributor-guide",id:"contributor-guide",isDocsHomePage:!1,title:"Contributor Guide",description:"Please fee free to report bug [...]
\ No newline at end of file
diff --git a/zh/assets/js/b4a67526.ad72e997.js b/zh/assets/js/b4a67526.ad72e997.js
new file mode 100644
index 0000000..17cd045
--- /dev/null
+++ b/zh/assets/js/b4a67526.ad72e997.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[39],{105:function(o){o.exports=JSON.parse('{"pluginId":"docs-apisix-ingress-controller","version":"current","label":"Next","isLast":true,"docsSidebars":{"docs":[{"collapsed":true,"type":"category","label":"APISIX\u2122\ufe0f Ingress Controller","items":[{"type":"link","label":"Introduction","href":"/zh/docs/ingress-controller/introduction"}]}]},"permalinkToSidebar":{"/zh/docs/ingress-controller/introduction":"docs"}}')}}]);
\ No newline at end of file
diff --git a/zh/assets/js/bacea567.49cd87f9.js b/zh/assets/js/bacea567.49cd87f9.js
new file mode 100644
index 0000000..5ce4398
--- /dev/null
+++ b/zh/assets/js/bacea567.49cd87f9.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[40],{106:function(e,t,r){"use strict";r.r(t),r.d(t,"frontMatter",(function(){return c})),r.d(t,"metadata",(function(){return i})),r.d(t,"toc",(function(){return s})),r.d(t,"default",(function(){return l}));var n=r(3),a=r(7),o=(r(0),r(125)),c={title:"Release Apache APISIX Dashboard 2.4"},i={permalink:"/zh/events/2021/02/12/release-apache-apisix-dashboard-2.4",source:"@site/events/2021-02-12-release-apache-apisix-dashboard-2.4.md",descri [...]
\ No newline at end of file
diff --git a/zh/assets/js/c119cf3c.b661798c.js b/zh/assets/js/c119cf3c.b661798c.js
new file mode 100644
index 0000000..59274ab
--- /dev/null
+++ b/zh/assets/js/c119cf3c.b661798c.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[41],{107:function(e,r,t){"use strict";t.r(r),t.d(r,"frontMatter",(function(){return c})),t.d(r,"metadata",(function(){return i})),t.d(r,"toc",(function(){return s})),t.d(r,"default",(function(){return l}));var n=t(3),a=t(7),o=(t(0),t(125)),c={title:"Release Apache APISIX Ingress Controller 0.3.0"},i={permalink:"/zh/events/2021/02/11/release-apache-apisix-ingress-controller-0.3.0",source:"@site/events/2021-02-11-release-apache-apisix-in [...]
\ No newline at end of file
diff --git a/c4f5d8e4.4c497370.js b/zh/assets/js/c4f5d8e4.a4d61c1b.js
similarity index 96%
rename from c4f5d8e4.4c497370.js
rename to zh/assets/js/c4f5d8e4.a4d61c1b.js
index a206718..e3c839f 100644
--- a/c4f5d8e4.4c497370.js
+++ b/zh/assets/js/c4f5d8e4.a4d61c1b.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[34],{101:function(e,t,a){"use strict";a.r(t);var n=a(121),l=a(22),r=a(124),c=a(123),i=a(141),s=a(0),o=a(214),m=a(140),u=a(0),d=function(){var e=Object(s.useState)(0),t=e[0],a=e[1],l=["Dynamic","Real-Time","High-Performance"],c=Object(s.useState)(!0),m=c[0],d=c[1],v=function(e){d(!1),a(e),d(!0)};return Object(s.useEffect)((function(){var e=setInterval((function(){v(t>=l.length-1?0:t+1)}),3600);return function(){return clearInterval(e)}} [...]
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[42],{108:function(e,t,a){"use strict";a.r(t);var n=a(128),l=a(17),r=a(132),c=a(129),i=a(151),s=a(0),o=a(226),m=a(150),u=a(0),d=function(){var e=Object(s.useState)(0),t=e[0],a=e[1],l=["Dynamic","Real-Time","High-Performance"],c=Object(s.useState)(!0),m=c[0],d=c[1],v=function(e){d(!1),a(e),d(!0)};return Object(s.useEffect)((function(){var e=setInterval((function(){v(t>=l.length-1?0:t+1)}),3600);return function(){return clearInterval(e)}} [...]
\ No newline at end of file
diff --git a/zh/assets/js/c5594f1a.d180ea48.js b/zh/assets/js/c5594f1a.d180ea48.js
new file mode 100644
index 0000000..ef6aa3c
--- /dev/null
+++ b/zh/assets/js/c5594f1a.d180ea48.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[43],{109:function(e,r,t){"use strict";t.r(r),t.d(r,"frontMatter",(function(){return c})),t.d(r,"metadata",(function(){return i})),t.d(r,"toc",(function(){return s})),t.d(r,"default",(function(){return p}));var n=t(3),a=t(7),o=(t(0),t(125)),c={title:"Release Apache APISIX Ingress Controller 0.2.0"},i={permalink:"/zh/events/2021/01/19/release-apache-apisix-ingress-controller-0.2.0",source:"@site/events/2021-01-19-release-apache-apisix-in [...]
\ No newline at end of file
diff --git a/zh/assets/js/ccc49370.938f9db4.js b/zh/assets/js/ccc49370.938f9db4.js
new file mode 100644
index 0000000..5efdd10
--- /dev/null
+++ b/zh/assets/js/ccc49370.938f9db4.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[44],{123:function(e,t,a){"use strict";a.r(t);var n=a(0),l=a.n(n),r=a(129),i=a(174),c=a(128);var o=function(e){var t=e.nextItem,a=e.prevItem;return l.a.createElement("nav",{className:"pagination-nav","aria-label":"Blog post page navigation"},l.a.createElement("div",{className:"pagination-nav__item"},a&&l.a.createElement(c.a,{className:"pagination-nav__link",to:a.permalink},l.a.createElement("div",{className:"pagination-nav__sublabel"}," [...]
\ No newline at end of file
diff --git a/zh/assets/js/d4de91ec.55c63e46.js b/zh/assets/js/d4de91ec.55c63e46.js
new file mode 100644
index 0000000..d612f3b
--- /dev/null
+++ b/zh/assets/js/d4de91ec.55c63e46.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[45],{110:function(e,t,a){"use strict";a.r(t),a.d(t,"frontMatter",(function(){return p})),a.d(t,"metadata",(function(){return c})),a.d(t,"toc",(function(){return l})),a.d(t,"default",(function(){return b}));var r=a(3),i=a(7),n=(a(0),a(125)),p={title:"Release Apache APISIX Dashboard 2.4"},c={permalink:"/zh/events/2021/02/12/release-apache-apisix-dashboard-2.4",source:"@site/events/2021-02-12-release-apache-apisix-dashboard-2.4.md",descri [...]
\ No newline at end of file
diff --git a/zh/assets/js/d73fca9b.42736b26.js b/zh/assets/js/d73fca9b.42736b26.js
new file mode 100644
index 0000000..dea5e74
--- /dev/null
+++ b/zh/assets/js/d73fca9b.42736b26.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[46],{111:function(i){i.exports=JSON.parse('{"pluginId":"docs-apisix","version":"current","label":"Next","isLast":true,"docsSidebars":{"docs":[{"collapsed":true,"type":"category","label":"APISIX\u2122\ufe0f","items":[{"type":"link","label":"Introduction","href":"/zh/docs/apisix/introduction"}]}]},"permalinkToSidebar":{"/zh/docs/apisix/introduction":"docs"}}')}}]);
\ No newline at end of file
diff --git a/zh/assets/js/e02da2c5.2b498400.js b/zh/assets/js/e02da2c5.2b498400.js
new file mode 100644
index 0000000..8f80f0b
--- /dev/null
+++ b/zh/assets/js/e02da2c5.2b498400.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[47],{112:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return o})),n.d(t,"metadata",(function(){return l})),n.d(t,"toc",(function(){return c})),n.d(t,"default",(function(){return s}));var a=n(3),r=n(7),i=(n(0),n(125)),o={title:"Envoy and Apache APISIX: Another way to implement the Envoy filter",author:"nic-chen",authorURL:"https://github.com/nic-chen",authorImageURL:"https://avatars0.githubusercontent.com/u/330006 [...]
\ No newline at end of file
diff --git a/zh/assets/js/e451ae2c.b451f25a.js b/zh/assets/js/e451ae2c.b451f25a.js
new file mode 100644
index 0000000..f454b5a
--- /dev/null
+++ b/zh/assets/js/e451ae2c.b451f25a.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[48],{113:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return o})),n.d(t,"metadata",(function(){return i})),n.d(t,"toc",(function(){return c})),n.d(t,"default",(function(){return u}));var a=n(3),r=n(7),s=(n(0),n(125)),o={title:"Stable Product Delivery with Cypress",author:"Yi Sun",authorURL:"https://github.com/LiteSun",authorImageURL:"https://avatars.githubusercontent.com/u/31329157?s=400&u=e81b4bb4db2be162c1fcac6 [...]
\ No newline at end of file
diff --git a/zh/assets/js/f243156b.3b8ec092.js b/zh/assets/js/f243156b.3b8ec092.js
new file mode 100644
index 0000000..1c8540e
--- /dev/null
+++ b/zh/assets/js/f243156b.3b8ec092.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[49],{116:function(o){o.exports=JSON.parse('{"pluginId":"docs-apisix-dashboard","version":"current","label":"Next","isLast":true,"docsSidebars":{"docs":[{"collapsed":true,"type":"category","label":"APISIX\u2122\ufe0f Dashboard","items":[{"type":"link","label":"Introduction","href":"/zh/docs/dashboard/introduction"}]}]},"permalinkToSidebar":{"/zh/docs/dashboard/introduction":"docs"}}')}}]);
\ No newline at end of file
diff --git a/zh/assets/js/f7488fe8.ed219fa4.js b/zh/assets/js/f7488fe8.ed219fa4.js
new file mode 100644
index 0000000..986a899
--- /dev/null
+++ b/zh/assets/js/f7488fe8.ed219fa4.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[50],{117:function(e){e.exports=JSON.parse('{"title":"Recent posts","items":[{"title":"Release Apache APISIX Dashboard 2.4","permalink":"/zh/events/2021/02/12/release-apache-apisix-dashboard-2.4"},{"title":"Release Apache APISIX Ingress Controller 0.3.0","permalink":"/zh/events/2021/02/11/release-apache-apisix-ingress-controller-0.3.0"},{"title":"Release Apache APISIX 2.3","permalink":"/zh/events/2021/02/09/release-apache-apisix-2.3"},{ [...]
\ No newline at end of file
diff --git a/zh/assets/js/fa919c95.75271be3.js b/zh/assets/js/fa919c95.75271be3.js
new file mode 100644
index 0000000..5cc83bc
--- /dev/null
+++ b/zh/assets/js/fa919c95.75271be3.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[51],{118:function(e,r,t){"use strict";t.r(r),t.d(r,"frontMatter",(function(){return c})),t.d(r,"metadata",(function(){return i})),t.d(r,"toc",(function(){return s})),t.d(r,"default",(function(){return p}));var n=t(3),a=t(7),o=(t(0),t(125)),c={title:"Release Apache APISIX Ingress Controller 0.1.0"},i={permalink:"/zh/events/2020/12/23/release-apache-apisix-ingress-controller-0.1.0",source:"@site/events/2020-12-23-release-apache-apisix-in [...]
\ No newline at end of file
diff --git a/zh/assets/js/main.20ae8921.js b/zh/assets/js/main.20ae8921.js
new file mode 100644
index 0000000..0410588
--- /dev/null
+++ b/zh/assets/js/main.20ae8921.js
@@ -0,0 +1,2 @@
+/*! For license information please see main.20ae8921.js.LICENSE.txt */
+(window.webpackJsonp=window.webpackJsonp||[]).push([[52],[function(e,t,n){"use strict";e.exports=n(38)},function(e,t,n){e.exports=n(42)()},function(e,t,n){"use strict";n.d(t,"a",(function(){return v})),n.d(t,"b",(function(){return w})),n.d(t,"c",(function(){return S})),n.d(t,"d",(function(){return A})),n.d(t,"e",(function(){return b})),n.d(t,"f",(function(){return L})),n.d(t,"g",(function(){return j})),n.d(t,"h",(function(){return g})),n.d(t,"i",(function(){return x})),n.d(t,"j",(functio [...]
\ No newline at end of file
diff --git a/main.be0eaecb.js.LICENSE.txt b/zh/assets/js/main.20ae8921.js.LICENSE.txt
similarity index 100%
rename from main.be0eaecb.js.LICENSE.txt
rename to zh/assets/js/main.20ae8921.js.LICENSE.txt
diff --git a/zh/assets/js/runtime~main.c157ebee.js b/zh/assets/js/runtime~main.c157ebee.js
new file mode 100644
index 0000000..1454fce
--- /dev/null
+++ b/zh/assets/js/runtime~main.c157ebee.js
@@ -0,0 +1 @@
+!function(e){function a(a){for(var f,n,b=a[0],d=a[1],o=a[2],u=0,l=[];u<b.length;u++)n=b[u],Object.prototype.hasOwnProperty.call(r,n)&&r[n]&&l.push(r[n][0]),r[n]=0;for(f in d)Object.prototype.hasOwnProperty.call(d,f)&&(e[f]=d[f]);for(i&&i(a);l.length;)l.shift()();return t.push.apply(t,o||[]),c()}function c(){for(var e,a=0;a<t.length;a++){for(var c=t[a],f=!0,n=1;n<c.length;n++){var d=c[n];0!==r[d]&&(f=!1)}f&&(t.splice(a--,1),e=b(b.s=c[0]))}return e}var f={},r={53:0},t=[];function n(e){retu [...]
\ No newline at end of file
diff --git a/zh/assets/js/styles.d25a02cf.js b/zh/assets/js/styles.d25a02cf.js
new file mode 100644
index 0000000..5320056
--- /dev/null
+++ b/zh/assets/js/styles.d25a02cf.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[0],{102:function(e,o,n){e.exports={blogPostTitle:"blogPostTitle_GeHD",blogPostDate:"blogPostDate_fNvV"}},103:function(e,o,n){e.exports={sidebar:"sidebar_2ahu",sidebarItemTitle:"sidebarItemTitle_2hhb",sidebarItemList:"sidebarItemList_2xAf",sidebarItem:"sidebarItem_2UVv",sidebarItemLink:"sidebarItemLink_1RT6",sidebarItemLinkActive:"sidebarItemLinkActive_12pM"}},115:function(e,o,n){e.exports={searchQueryInput:"searchQueryInput_35WP",searc [...]
\ No newline at end of file
diff --git a/zh/blog/2020/08/22/new-website/index.html b/zh/blog/2020/08/22/new-website/index.html
new file mode 100644
index 0000000..533a39a
--- /dev/null
+++ b/zh/blog/2020/08/22/new-website/index.html
@@ -0,0 +1,36 @@
+<!doctype html>
+<html lang="zh">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
+<link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/zh/opensearch.xml">
+<link rel="alternate" type="application/rss+xml" href="/zh/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">New website for Apache APISIX | Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="New website for Apache APISIX | Apache APISIX™"><meta data-react-helmet="true" property="og:description" content="We are just refactored out website for Apache APISIX by using docusaurus."><meta data-react-helmet="true" name="t [...]
+<link rel="preload" href="/zh/assets/js/styles.d25a02cf.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.c157ebee.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.20ae8921.js" as="script">
+<link rel="preload" href="/zh/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/zh/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/zh/assets/js/4.a448f392.js" as="script">
+<link rel="preload" href="/zh/assets/js/ccc49370.938f9db4.js" as="script">
+<link rel="preload" href="/zh/assets/js/2d8fe9ee.fbf876c8.js" as="script">
+<link rel="preload" href="/zh/assets/js/a6641250.a8f6a2f7.js" as="script">
+</head>
+<body>
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+<script src="/zh/assets/js/styles.d25a02cf.js"></script>
+<script src="/zh/assets/js/runtime~main.c157ebee.js"></script>
+<script src="/zh/assets/js/main.20ae8921.js"></script>
+<script src="/zh/assets/js/1.b21fad17.js"></script>
+<script src="/zh/assets/js/2.c74b4887.js"></script>
+<script src="/zh/assets/js/4.a448f392.js"></script>
+<script src="/zh/assets/js/ccc49370.938f9db4.js"></script>
+<script src="/zh/assets/js/2d8fe9ee.fbf876c8.js"></script>
+<script src="/zh/assets/js/a6641250.a8f6a2f7.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/zh/blog/2020/12/16/another-way-to-implement-envoy-filter/index.html b/zh/blog/2020/12/16/another-way-to-implement-envoy-filter/index.html
new file mode 100644
index 0000000..b9680ef
--- /dev/null
+++ b/zh/blog/2020/12/16/another-way-to-implement-envoy-filter/index.html
@@ -0,0 +1,38 @@
+<!doctype html>
+<html lang="zh">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
+<link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/zh/opensearch.xml">
+<link rel="alternate" type="application/rss+xml" href="/zh/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Envoy and Apache APISIX: Another way to implement the Envoy filter | Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Envoy and Apache APISIX: Another way to implement the Envoy filter | Apache APISIX™"><meta data-react-helmet="true" property="og:description" content="@nic-chen, Apache APISIX PMC from Shenz [...]
+<link rel="preload" href="/zh/assets/js/styles.d25a02cf.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.c157ebee.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.20ae8921.js" as="script">
+<link rel="preload" href="/zh/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/zh/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/zh/assets/js/4.a448f392.js" as="script">
+<link rel="preload" href="/zh/assets/js/ccc49370.938f9db4.js" as="script">
+<link rel="preload" href="/zh/assets/js/2d8fe9ee.fbf876c8.js" as="script">
+<link rel="preload" href="/zh/assets/js/749ed826.21ee0429.js" as="script">
+</head>
+<body>
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+A pluggable filter chain mechanism allows filters to be written to perform different tasks and inserted into the main server.</p><p><img src="https://static.apiseven.com/filters.png" alt="Envoy filter"></p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_2LWZ" id="expansion-method"></a>Expansion method<a class="hash-link" href="#expansion-method" title="Direct link to heading">#</a></h3><p>The existing filters may not meet the user&#x27;s custom requirements. In this  [...]
+In the example, we configured plugin <code>uri-blocker</code> for the route whose prefix is ​​<code>/foo</code>, as well as the block rule of the plugin and the response status when a block is required.</p><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_2LWZ" id="second-step-parse-request"></a>Second step, parse request<a class="hash-link" href="#second-step-parse-request" title="Direct link to heading">#</a></h4><p>We encapsulated the client request data into <code> [...]
+<script src="/zh/assets/js/styles.d25a02cf.js"></script>
+<script src="/zh/assets/js/runtime~main.c157ebee.js"></script>
+<script src="/zh/assets/js/main.20ae8921.js"></script>
+<script src="/zh/assets/js/1.b21fad17.js"></script>
+<script src="/zh/assets/js/2.c74b4887.js"></script>
+<script src="/zh/assets/js/4.a448f392.js"></script>
+<script src="/zh/assets/js/ccc49370.938f9db4.js"></script>
+<script src="/zh/assets/js/2d8fe9ee.fbf876c8.js"></script>
+<script src="/zh/assets/js/749ed826.21ee0429.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/zh/blog/2020/12/18/a-first-look-at-kubernetes-service-api/index.html b/zh/blog/2020/12/18/a-first-look-at-kubernetes-service-api/index.html
new file mode 100644
index 0000000..60746d0
--- /dev/null
+++ b/zh/blog/2020/12/18/a-first-look-at-kubernetes-service-api/index.html
@@ -0,0 +1,36 @@
+<!doctype html>
+<html lang="zh">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
+<link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/zh/opensearch.xml">
+<link rel="alternate" type="application/rss+xml" href="/zh/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">初探 Kubernetes Service APIs | Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="初探 Kubernetes Service APIs | Apache APISIX™"><meta data-react-helmet="true" property="og:description" content="@gxthrj, Apache APISIX PMC &amp; Apache apisix-ingress-controller Founder from Shenzhen Zhiliu Technology Co."><meta da [...]
+<link rel="preload" href="/zh/assets/js/styles.d25a02cf.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.c157ebee.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.20ae8921.js" as="script">
+<link rel="preload" href="/zh/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/zh/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/zh/assets/js/4.a448f392.js" as="script">
+<link rel="preload" href="/zh/assets/js/ccc49370.938f9db4.js" as="script">
+<link rel="preload" href="/zh/assets/js/2d8fe9ee.fbf876c8.js" as="script">
+<link rel="preload" href="/zh/assets/js/a4a2cefa.309c52fd.js" as="script">
+</head>
+<body>
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+<script src="/zh/assets/js/styles.d25a02cf.js"></script>
+<script src="/zh/assets/js/runtime~main.c157ebee.js"></script>
+<script src="/zh/assets/js/main.20ae8921.js"></script>
+<script src="/zh/assets/js/1.b21fad17.js"></script>
+<script src="/zh/assets/js/2.c74b4887.js"></script>
+<script src="/zh/assets/js/4.a448f392.js"></script>
+<script src="/zh/assets/js/ccc49370.938f9db4.js"></script>
+<script src="/zh/assets/js/2d8fe9ee.fbf876c8.js"></script>
+<script src="/zh/assets/js/a4a2cefa.309c52fd.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/zh/blog/2021/01/21/run-ingress-apisix-on-amazon-eks/index.html b/zh/blog/2021/01/21/run-ingress-apisix-on-amazon-eks/index.html
new file mode 100644
index 0000000..4eabd71
--- /dev/null
+++ b/zh/blog/2021/01/21/run-ingress-apisix-on-amazon-eks/index.html
@@ -0,0 +1,37 @@
+<!doctype html>
+<html lang="zh">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
+<link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/zh/opensearch.xml">
+<link rel="alternate" type="application/rss+xml" href="/zh/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Run Ingress APISIX on Amazon EKS | Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Run Ingress APISIX on Amazon EKS | Apache APISIX™"><meta data-react-helmet="true" property="og:description" content="@Chao Zhang, Apache APISIX Comitter from Shenzhen Zhiliu Technology Co."><meta data-react-helmet="true" nam [...]
+<link rel="preload" href="/zh/assets/js/styles.d25a02cf.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.c157ebee.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.20ae8921.js" as="script">
+<link rel="preload" href="/zh/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/zh/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/zh/assets/js/4.a448f392.js" as="script">
+<link rel="preload" href="/zh/assets/js/ccc49370.938f9db4.js" as="script">
+<link rel="preload" href="/zh/assets/js/2d8fe9ee.fbf876c8.js" as="script">
+<link rel="preload" href="/zh/assets/js/1c89ab3b.19ea93a0.js" as="script">
+</head>
+<body>
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;headers&quot;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> </span><span c [...]
+<script src="/zh/assets/js/styles.d25a02cf.js"></script>
+<script src="/zh/assets/js/runtime~main.c157ebee.js"></script>
+<script src="/zh/assets/js/main.20ae8921.js"></script>
+<script src="/zh/assets/js/1.b21fad17.js"></script>
+<script src="/zh/assets/js/2.c74b4887.js"></script>
+<script src="/zh/assets/js/4.a448f392.js"></script>
+<script src="/zh/assets/js/ccc49370.938f9db4.js"></script>
+<script src="/zh/assets/js/2d8fe9ee.fbf876c8.js"></script>
+<script src="/zh/assets/js/1c89ab3b.19ea93a0.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/zh/blog/2021/02/08/stable-product-delivery-with-cypress/index.html b/zh/blog/2021/02/08/stable-product-delivery-with-cypress/index.html
new file mode 100644
index 0000000..adaddfa
--- /dev/null
+++ b/zh/blog/2021/02/08/stable-product-delivery-with-cypress/index.html
@@ -0,0 +1,36 @@
+<!doctype html>
+<html lang="zh">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
+<link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/zh/opensearch.xml">
+<link rel="alternate" type="application/rss+xml" href="/zh/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Stable Product Delivery with Cypress | Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Stable Product Delivery with Cypress | Apache APISIX™"><meta data-react-helmet="true" property="og:description" content="@LiteSun, Apache APISIX Committer from Shenzhen Zhiliu Technology Co."><meta data-react-helmet="tru [...]
+<link rel="preload" href="/zh/assets/js/styles.d25a02cf.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.c157ebee.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.20ae8921.js" as="script">
+<link rel="preload" href="/zh/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/zh/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/zh/assets/js/4.a448f392.js" as="script">
+<link rel="preload" href="/zh/assets/js/ccc49370.938f9db4.js" as="script">
+<link rel="preload" href="/zh/assets/js/2d8fe9ee.fbf876c8.js" as="script">
+<link rel="preload" href="/zh/assets/js/47e0bf55.1e18a655.js" as="script">
+</head>
+<body>
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+<script src="/zh/assets/js/styles.d25a02cf.js"></script>
+<script src="/zh/assets/js/runtime~main.c157ebee.js"></script>
+<script src="/zh/assets/js/main.20ae8921.js"></script>
+<script src="/zh/assets/js/1.b21fad17.js"></script>
+<script src="/zh/assets/js/2.c74b4887.js"></script>
+<script src="/zh/assets/js/4.a448f392.js"></script>
+<script src="/zh/assets/js/ccc49370.938f9db4.js"></script>
+<script src="/zh/assets/js/2d8fe9ee.fbf876c8.js"></script>
+<script src="/zh/assets/js/47e0bf55.1e18a655.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/zh/blog/atom.xml b/zh/blog/atom.xml
new file mode 100644
index 0000000..30641a0
--- /dev/null
+++ b/zh/blog/atom.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<feed xmlns="http://www.w3.org/2005/Atom">
+    <id>https://apisix.apache.org/blog</id>
+    <title>Apache APISIX™ Blog</title>
+    <updated>2021-02-08T00:00:00.000Z</updated>
+    <generator>https://github.com/jpmonette/feed</generator>
+    <link rel="alternate" href="https://apisix.apache.org/blog"/>
+    <subtitle>Apache APISIX™ Blog</subtitle>
+    <icon>https://apisix.apache.org/img/favicon.png</icon>
+    <entry>
+        <title type="html"><![CDATA[Stable Product Delivery with Cypress]]></title>
+        <id>Stable Product Delivery with Cypress</id>
+        <link href="https://apisix.apache.org/zh/blog/2021/02/08/stable-product-delivery-with-cypress"/>
+        <updated>2021-02-08T00:00:00.000Z</updated>
+        <summary type="html"><![CDATA[@LiteSun, Apache APISIX Committer from Shenzhen Zhiliu Technology Co.]]></summary>
+    </entry>
+    <entry>
+        <title type="html"><![CDATA[Run Ingress APISIX on Amazon EKS]]></title>
+        <id>Run Ingress APISIX on Amazon EKS</id>
+        <link href="https://apisix.apache.org/zh/blog/2021/01/21/run-ingress-apisix-on-amazon-eks"/>
+        <updated>2021-01-21T00:00:00.000Z</updated>
+        <summary type="html"><![CDATA[@Chao Zhang, Apache APISIX Comitter from Shenzhen Zhiliu Technology Co.]]></summary>
+    </entry>
+    <entry>
+        <title type="html"><![CDATA[初探 Kubernetes Service APIs]]></title>
+        <id>初探 Kubernetes Service APIs</id>
+        <link href="https://apisix.apache.org/zh/blog/2020/12/18/a-first-look-at-kubernetes-service-api"/>
+        <updated>2020-12-18T00:00:00.000Z</updated>
+        <summary type="html"><![CDATA[@gxthrj, Apache APISIX PMC & Apache apisix-ingress-controller Founder from Shenzhen Zhiliu Technology Co.]]></summary>
+    </entry>
+    <entry>
+        <title type="html"><![CDATA[Envoy and Apache APISIX: Another way to implement the Envoy filter]]></title>
+        <id>Envoy and Apache APISIX: Another way to implement the Envoy filter</id>
+        <link href="https://apisix.apache.org/zh/blog/2020/12/16/another-way-to-implement-envoy-filter"/>
+        <updated>2020-12-16T00:00:00.000Z</updated>
+        <summary type="html"><![CDATA[@nic-chen, Apache APISIX PMC from Shenzhen Zhiliu Technology Co.]]></summary>
+    </entry>
+    <entry>
+        <title type="html"><![CDATA[New website for Apache APISIX]]></title>
+        <id>New website for Apache APISIX</id>
+        <link href="https://apisix.apache.org/zh/blog/2020/08/22/new-website"/>
+        <updated>2020-08-22T00:00:00.000Z</updated>
+        <summary type="html"><![CDATA[We are just refactored out website for Apache APISIX by using docusaurus.]]></summary>
+    </entry>
+</feed>
\ No newline at end of file
diff --git a/zh/blog/index.html b/zh/blog/index.html
new file mode 100644
index 0000000..0706d5f
--- /dev/null
+++ b/zh/blog/index.html
@@ -0,0 +1,49 @@
+<!doctype html>
+<html lang="zh">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
+<link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/zh/opensearch.xml">
+<link rel="alternate" type="application/rss+xml" href="/zh/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Blog | Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Blog | Apache APISIX™"><meta data-react-helmet="true" property="og:description" content="Blog"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:url" content="https://apisix.apa [...]
+<link rel="preload" href="/zh/assets/js/styles.d25a02cf.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.c157ebee.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.20ae8921.js" as="script">
+<link rel="preload" href="/zh/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/zh/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/zh/assets/js/4.a448f392.js" as="script">
+<link rel="preload" href="/zh/assets/js/a6aa9e1f.c641128b.js" as="script">
+<link rel="preload" href="/zh/assets/js/2d8fe9ee.fbf876c8.js" as="script">
+<link rel="preload" href="/zh/assets/js/e451ae2c.b451f25a.js" as="script">
+<link rel="preload" href="/zh/assets/js/514de2af.c87083ac.js" as="script">
+<link rel="preload" href="/zh/assets/js/5bb67ffc.5facfc0f.js" as="script">
+<link rel="preload" href="/zh/assets/js/e02da2c5.2b498400.js" as="script">
+<link rel="preload" href="/zh/assets/js/37e3b3ea.6fa5c709.js" as="script">
+<link rel="preload" href="/zh/assets/js/3a332aed.00986c3a.js" as="script">
+</head>
+<body>
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;headers&quot;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> </span><span c [...]
+A pluggable filter chain mechanism allows filters to be written to perform different tasks and inserted into the main server.</p><p><img src="https://static.apiseven.com/filters.png" alt="Envoy filter"></p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_2LWZ" id="expansion-method"></a>Expansion method<a class="hash-link" href="#expansion-method" title="Direct link to heading">#</a></h3><p>The existing filters may not meet the user&#x27;s custom requirements. In this  [...]
+In the example, we configured plugin <code>uri-blocker</code> for the route whose prefix is ​​<code>/foo</code>, as well as the block rule of the plugin and the response status when a block is required.</p><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_2LWZ" id="second-step-parse-request"></a>Second step, parse request<a class="hash-link" href="#second-step-parse-request" title="Direct link to heading">#</a></h4><p>We encapsulated the client request data into <code> [...]
+<script src="/zh/assets/js/styles.d25a02cf.js"></script>
+<script src="/zh/assets/js/runtime~main.c157ebee.js"></script>
+<script src="/zh/assets/js/main.20ae8921.js"></script>
+<script src="/zh/assets/js/1.b21fad17.js"></script>
+<script src="/zh/assets/js/2.c74b4887.js"></script>
+<script src="/zh/assets/js/4.a448f392.js"></script>
+<script src="/zh/assets/js/a6aa9e1f.c641128b.js"></script>
+<script src="/zh/assets/js/2d8fe9ee.fbf876c8.js"></script>
+<script src="/zh/assets/js/e451ae2c.b451f25a.js"></script>
+<script src="/zh/assets/js/514de2af.c87083ac.js"></script>
+<script src="/zh/assets/js/5bb67ffc.5facfc0f.js"></script>
+<script src="/zh/assets/js/e02da2c5.2b498400.js"></script>
+<script src="/zh/assets/js/37e3b3ea.6fa5c709.js"></script>
+<script src="/zh/assets/js/3a332aed.00986c3a.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/zh/blog/rss.xml b/zh/blog/rss.xml
new file mode 100644
index 0000000..80a3f73
--- /dev/null
+++ b/zh/blog/rss.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<rss version="2.0">
+    <channel>
+        <title>Apache APISIX™ Blog</title>
+        <link>https://apisix.apache.org/blog</link>
+        <description>Apache APISIX™ Blog</description>
+        <lastBuildDate>Mon, 08 Feb 2021 00:00:00 GMT</lastBuildDate>
+        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
+        <generator>https://github.com/jpmonette/feed</generator>
+        <item>
+            <title><![CDATA[Stable Product Delivery with Cypress]]></title>
+            <link>https://apisix.apache.org/zh/blog/2021/02/08/stable-product-delivery-with-cypress</link>
+            <guid>Stable Product Delivery with Cypress</guid>
+            <pubDate>Mon, 08 Feb 2021 00:00:00 GMT</pubDate>
+            <description><![CDATA[@LiteSun, Apache APISIX Committer from Shenzhen Zhiliu Technology Co.]]></description>
+        </item>
+        <item>
+            <title><![CDATA[Run Ingress APISIX on Amazon EKS]]></title>
+            <link>https://apisix.apache.org/zh/blog/2021/01/21/run-ingress-apisix-on-amazon-eks</link>
+            <guid>Run Ingress APISIX on Amazon EKS</guid>
+            <pubDate>Thu, 21 Jan 2021 00:00:00 GMT</pubDate>
+            <description><![CDATA[@Chao Zhang, Apache APISIX Comitter from Shenzhen Zhiliu Technology Co.]]></description>
+        </item>
+        <item>
+            <title><![CDATA[初探 Kubernetes Service APIs]]></title>
+            <link>https://apisix.apache.org/zh/blog/2020/12/18/a-first-look-at-kubernetes-service-api</link>
+            <guid>初探 Kubernetes Service APIs</guid>
+            <pubDate>Fri, 18 Dec 2020 00:00:00 GMT</pubDate>
+            <description><![CDATA[@gxthrj, Apache APISIX PMC & Apache apisix-ingress-controller Founder from Shenzhen Zhiliu Technology Co.]]></description>
+        </item>
+        <item>
+            <title><![CDATA[Envoy and Apache APISIX: Another way to implement the Envoy filter]]></title>
+            <link>https://apisix.apache.org/zh/blog/2020/12/16/another-way-to-implement-envoy-filter</link>
+            <guid>Envoy and Apache APISIX: Another way to implement the Envoy filter</guid>
+            <pubDate>Wed, 16 Dec 2020 00:00:00 GMT</pubDate>
+            <description><![CDATA[@nic-chen, Apache APISIX PMC from Shenzhen Zhiliu Technology Co.]]></description>
+        </item>
+        <item>
+            <title><![CDATA[New website for Apache APISIX]]></title>
+            <link>https://apisix.apache.org/zh/blog/2020/08/22/new-website</link>
+            <guid>New website for Apache APISIX</guid>
+            <pubDate>Sat, 22 Aug 2020 00:00:00 GMT</pubDate>
+            <description><![CDATA[We are just refactored out website for Apache APISIX by using docusaurus.]]></description>
+        </item>
+    </channel>
+</rss>
\ No newline at end of file
diff --git a/zh/css/custom.css b/zh/css/custom.css
new file mode 100644
index 0000000..50010b7
--- /dev/null
+++ b/zh/css/custom.css
@@ -0,0 +1,21 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+@media only screen and (min-device-width: 360px) and (max-device-width: 736px) {
+}
+
+@media only screen and (min-width: 1024px) {
+}
+
+@media only screen and (max-width: 1023px) {
+}
+
+@media only screen and (min-width: 1400px) {
+}
+
+@media only screen and (min-width: 1500px) {
+}
diff --git a/zh/data/events.json b/zh/data/events.json
new file mode 100644
index 0000000..4b46066
--- /dev/null
+++ b/zh/data/events.json
@@ -0,0 +1,22 @@
+[
+  {
+    "title": "Release Apache APISIX Dashboard 2.4",
+    "fileName": "2021-02-12-release-apache-apisix-dashboard-2.4"
+  },
+  {
+    "title": "Release Apache APISIX Ingress Controller 0.3.0",
+    "fileName": "2021-02-11-release-apache-apisix-ingress-controller-0.3.0"
+  },
+  {
+    "title": "Release Apache APISIX 2.3",
+    "fileName": "2021-02-09-release-apache-apisix-2.3"
+  },
+  {
+    "title": "Release Apache APISIX Ingress Controller 0.2.0",
+    "fileName": "2021-01-19-release-apache-apisix-ingress-controller-0.2.0"
+  },
+  {
+    "title": "Release Apache APISIX Ingress Controller 0.1.0",
+    "fileName": "2020-12-23-release-apache-apisix-ingress-controller-0.1.0"
+  }
+]
diff --git a/zh/data/showcases.json b/zh/data/showcases.json
new file mode 100644
index 0000000..9139f34
--- /dev/null
+++ b/zh/data/showcases.json
@@ -0,0 +1,255 @@
+[
+  {
+    "caption": "360 奇虎",
+    "image": "https://static.apiseven.com/logo/360.png",
+    "infoLink": "https://www.360.cn/",
+    "pinned": true
+  },
+  {
+    "caption": "大商天狗",
+    "image": "https://static.apiseven.com/logo/51tiangou.svg",
+    "infoLink": "http://51tiangou.com/",
+    "pinned": true
+  },
+  {
+    "caption": "妙笔 AI",
+    "image": "https://static.apiseven.com/logo/aimiaobi.png",
+    "infoLink": "http://aimiaobi.com/",
+    "pinned": true
+  },
+  {
+    "caption": "超链云商",
+    "image": "https://static.apiseven.com/logo/chaolian360.png",
+    "infoLink": "https://www.chaolian360.com/",
+    "pinned": true
+  },
+  {
+    "caption": "DaoCloud",
+    "image": "https://static.apiseven.com/logo/daocloud.png",
+    "infoLink": "https://www.daocloud.io/",
+    "pinned": true
+  },
+  {
+    "caption": "小电科技",
+    "image": "https://static.apiseven.com/logo/dian.png",
+    "infoLink": "http://dian.so/",
+    "pinned": true
+  },
+  {
+    "caption": "嘀嗒出行",
+    "image": "https://static.apiseven.com/logo/didachuxing.jpg",
+    "infoLink": "https://www.didachuxing.com/",
+    "pinned": true
+  },
+  {
+    "caption": "湖南新云网",
+    "image": "https://static.apiseven.com/logo/cunw.png",
+    "infoLink": "http://www.cunw.com.cn/",
+    "pinned": true
+  },
+  {
+    "caption": "大搜车",
+    "image": "https://static.apiseven.com/logo/dasouche.png",
+    "infoLink": "https://www.dasouche.com/",
+    "pinned": true
+  },
+  {
+    "caption": "大淘客",
+    "image": "https://static.apiseven.com/logo/dataoke.png",
+    "infoLink": "https://www.dataoke.com/",
+    "pinned": true
+  },
+  {
+    "caption": "eFactory",
+    "image": "https://static.apiseven.com/logo/eFactory.webp",
+    "infoLink": "https://www.efactory-project.eu/",
+    "pinned": true
+  },
+  {
+    "caption": "理房通",
+    "image": "https://static.apiseven.com/logo/ehomepay.png",
+    "infoLink": "https://www.ehomepay.com.cn/",
+    "pinned": true
+  },
+  {
+    "caption": "简单一点科技",
+    "image": "https://static.apiseven.com/logo/eZone.png",
+    "infoLink": "https://ezone.work/",
+    "pinned": true
+  },
+  {
+    "caption": "fansup",
+    "image": "https://static.apiseven.com/logo/fansup.png",
+    "infoLink": "https://fansup.mobi/",
+    "pinned": true
+  },
+  {
+    "caption": "海尔优家",
+    "image": "https://static.apiseven.com/logo/haier.webp",
+    "infoLink": "http://haieruplus.com/",
+    "pinned": true
+  },
+  {
+    "caption": "中移杭研",
+    "image": "https://static.apiseven.com/logo/hy10086.png",
+    "infoLink": "https://hy.10086.cn/",
+    "pinned": true
+  },
+  {
+    "caption": "航天网信",
+    "image": "https://static.apiseven.com/logo/htzhiyun.png",
+    "infoLink": "https://www.htzhiyun.cn/",
+    "pinned": true
+  },
+  {
+    "caption": "好洛维",
+    "image": "https://static.apiseven.com/logo/hellowin.jpg",
+    "infoLink": "http://www.hellowin.cn/",
+    "pinned": true
+  },
+  {
+    "caption": "HelloTalk",
+    "image": "https://static.apiseven.com/logo/HelloTalk.png",
+    "infoLink": "https://www.hellotalk.com/",
+    "pinned": true
+  },
+  {
+    "caption": "华为",
+    "image": "https://static.apiseven.com/logo/huawei.png",
+    "infoLink": "http://huawei.com/",
+    "pinned": true
+  },
+  {
+    "caption": "虎牙",
+    "image": "https://static.apiseven.com/logo/huya.jpeg",
+    "infoLink": "https://www.huya.com/",
+    "pinned": true
+  },
+  {
+    "caption": "艾佳生活",
+    "image": "https://static.apiseven.com/logo/ihomefnt.gif",
+    "infoLink": "https://www.ihomefnt.com/",
+    "pinned": true
+  },
+  {
+    "caption": "简单心理",
+    "image": "https://static.apiseven.com/logo/jiandanxinli.png",
+    "infoLink": "https://www.jiandanxinli.com/",
+    "pinned": true
+  },
+  {
+    "caption": "同程金服",
+    "image": "https://static.apiseven.com/logo/jr_ly.png",
+    "infoLink": "https://jr.ly.com/",
+    "pinned": true
+  },
+  {
+    "caption": "贝壳找房",
+    "image": "https://static.apiseven.com/logo/ke.png",
+    "infoLink": "https://www.ke.com/",
+    "pinned": true
+  },
+  {
+    "caption": "魅族",
+    "image": "https://static.apiseven.com/logo/meizu.jpg",
+    "infoLink": "https://www.meizu.com/",
+    "pinned": true
+  },
+  {
+    "caption": "明源云客",
+    "image": "https://static.apiseven.com/logo/mingyuanyun.jpg",
+    "infoLink": "https://www.mingyuanyun.com/",
+    "pinned": true
+  },
+  {
+    "caption": "NASA",
+    "image": "https://static.apiseven.com/logo/nasa.png",
+    "infoLink": "https://www.jpl.nasa.gov/",
+    "pinned": true
+  },
+  {
+    "caption": "网易",
+    "image": "https://static.apiseven.com/logo/163.png",
+    "infoLink": "http://www.163.com/",
+    "pinned": true
+  },
+  {
+    "caption": "湖南国科云通",
+    "image": "https://static.apiseven.com/logo/sinog2c.png",
+    "infoLink": "http://sinog2c.com/",
+    "pinned": true
+  },
+  {
+    "caption": "炎黄新星",
+    "image": "https://static.apiseven.com/logo/sinovatech.gif",
+    "infoLink": "https://www.sinovatech.com/",
+    "pinned": true
+  },
+  {
+    "caption": "泰康云",
+    "image": "https://static.apiseven.com/logo/taikang.svg",
+    "infoLink": "http://taikang.com/",
+    "pinned": true
+  },
+  {
+    "caption": "糖豆网",
+    "image": "https://static.apiseven.com/logo/tangdou.png",
+    "infoLink": "http://www.tangdou.com/",
+    "pinned": true
+  },
+  {
+    "caption": "腾讯云",
+    "image": "https://static.apiseven.com/logo/TencentCloud.jpg",
+    "infoLink": "https://cloud.tencent.com/",
+    "pinned": true
+  },
+
+  {
+    "caption": "腾讯优图",
+    "image": "https://static.apiseven.com/logo/youtu.jpg",
+    "infoLink": "https://open.youtu.qq.com/",
+    "pinned": true
+  },
+  {
+    "caption": "万思",
+    "image": "https://static.apiseven.com/logo/teamones.png",
+    "infoLink": "https://www.teamones.cn/",
+    "pinned": true
+  },
+  {
+    "caption": "中国航信",
+    "image": "https://static.apiseven.com/logo/TravelSky.png",
+    "infoLink": "http://travelsky.com/",
+    "pinned": true
+  },
+  {
+    "caption": "随行付",
+    "image": "https://static.apiseven.com/logo/vbill.png",
+    "infoLink": "https://vbill.cn/",
+    "pinned": true
+  },
+  {
+    "caption": "优信二手车",
+    "image": "https://static.apiseven.com/logo/xin.png",
+    "infoLink": "https://www.xin.com/",
+    "pinned": true
+  },
+  {
+    "caption": "雪球",
+    "image": "https://static.apiseven.com/logo/xueqiu.jpeg",
+    "infoLink": "https://xueqiu.com/",
+    "pinned": true
+  },
+  {
+    "caption": "租租车",
+    "image": "https://static.apiseven.com/logo/zuzuche.png",
+    "infoLink": "https://www.zuzuche.com/",
+    "pinned": true
+  },
+  {
+    "caption": "作业帮",
+    "image": "https://static.apiseven.com/logo/zybang.png",
+    "infoLink": "https://www.zybang.com/",
+    "pinned": true
+  }
+]
diff --git a/zh/data/team.json b/zh/data/team.json
new file mode 100644
index 0000000..919dce7
--- /dev/null
+++ b/zh/data/team.json
@@ -0,0 +1,210 @@
+[
+  {
+    "groupName": "PMC",
+    "members": [
+      {
+        "name": "Ayeshmantha Perera",
+        "username": "akayeshmantha",
+        "githubUsername": "Akayeshmantha",
+        "avatarUrl": "https://avatars.githubusercontent.com/u/20354461?v=4"
+      },
+      {
+        "name": "Hui Li",
+        "username": "yousa",
+        "githubUsername": "Miss-you",
+        "avatarUrl": "https://avatars.githubusercontent.com/u/3816205?v=4"
+      },
+      {
+        "name": "Jiayu Qiu",
+        "username": "qiujiayu",
+        "githubUsername": "qiujiayu",
+        "avatarUrl": "https://avatars.githubusercontent.com/u/3702914?v=4"
+      },
+      {
+        "name": "JinChao Shuai",
+        "username": "shuaijinchao",
+        "githubUsername": "shuaijinchao",
+        "avatarUrl": "https://avatars.githubusercontent.com/u/8529452?v=4"
+      },
+      {
+        "name": "Justin Mclean",
+        "username": "jmclean",
+        "githubUsername": "justinmclean",
+        "avatarUrl": "https://avatars.githubusercontent.com/u/144504?v=4"
+      },
+      {
+        "name": "Junxu Chen",
+        "username": "chenjunxu",
+        "githubUsername": "nic-chen",
+        "avatarUrl": "https://avatars.githubusercontent.com/u/33000667?v=4"
+      },
+      {
+        "name": "Kevin Ratnasekera",
+        "username": "djkevincr",
+        "githubUsername": "djkevincr",
+        "avatarUrl": "https://avatars.githubusercontent.com/u/1346010?v=4"
+      },
+      {
+        "name": "Lang Wang",
+        "username": "totemofwolf",
+        "githubUsername": "totemofwolf",
+        "avatarUrl": "https://avatars.githubusercontent.com/u/1818214?v=4"
+      },
+      {
+        "name": "Ling Li",
+        "username": "liling",
+        "githubUsername": "lilien1010",
+        "avatarUrl": "https://avatars.githubusercontent.com/u/3814966?v=4"
+      },
+      {
+        "name": "Linsir Wu",
+        "username": "linsir",
+        "githubUsername": "linsir",
+        "avatarUrl": "https://avatars.githubusercontent.com/u/4339659?v=4"
+      },
+      {
+        "name": "Ming Wen",
+        "username": "wenming",
+        "githubUsername": "moonming",
+        "avatarUrl": "https://avatars.githubusercontent.com/u/26448043?v=4"
+      },
+      {
+        "name": "Nirojan Selvanathan",
+        "username": "sshniro",
+        "githubUsername": "sshniro",
+        "avatarUrl": "https://avatars.githubusercontent.com/u/13045528?v=4"
+      },
+      {
+        "name": "Sheng Wu",
+        "username": "wusheng",
+        "githubUsername": "wu-sheng",
+        "avatarUrl": "https://avatars.githubusercontent.com/u/5441976?v=4"
+      },
+      {
+        "name": "Vinci",
+        "username": "vinci",
+        "githubUsername": "ShiningRush",
+        "avatarUrl": "https://avatars.githubusercontent.com/u/24238012?v=4"
+      },
+      {
+        "name": "Von Gosling",
+        "username": "vongosling",
+        "githubUsername": "vongosling",
+        "avatarUrl": "https://avatars.githubusercontent.com/u/635581?v=4"
+      },
+      {
+        "name": "Wei Jin",
+        "username": "kvn",
+        "githubUsername": "gxthrj",
+        "avatarUrl": "https://avatars.githubusercontent.com/u/4413028?v=4"
+      },
+      {
+        "name": "Wei Liu",
+        "username": "agile6v",
+        "githubUsername": "agile6v",
+        "avatarUrl": "https://avatars.githubusercontent.com/u/2017491?v=4"
+      },
+      {
+        "name": "Willem Ning Jiang",
+        "username": "ningjiang",
+        "githubUsername": "WillemJiang",
+        "avatarUrl": "https://avatars.githubusercontent.com/u/219644?v=4"
+      },
+      {
+        "name": "Xiran Liu",
+        "username": "liuxiran",
+        "githubUsername": "liuxiran",
+        "avatarUrl": "https://avatars.githubusercontent.com/u/2561857?v=4"
+      },
+      {
+        "name": "YuanSheng Wang",
+        "username": "membphis",
+        "githubUsername": "membphis",
+        "avatarUrl": "https://avatars.githubusercontent.com/u/6814606?v=4"
+      },
+      {
+        "name": "Zexuan Luo",
+        "username": "spacewander",
+        "githubUsername": "spacewander",
+        "avatarUrl": "https://avatars.githubusercontent.com/u/4161644?v=4"
+      },
+      {
+        "name": "Zhiyuan",
+        "username": "juzhiyuan",
+        "githubUsername": "juzhiyuan",
+        "avatarUrl": "https://avatars.githubusercontent.com/u/2106987?v=4"
+      }
+    ]
+  },
+  {
+    "groupName": "Committer",
+    "members": [
+      {
+        "name": "acmly",
+        "username": "yangli",
+        "githubUsername": "JanLi-air",
+        "avatarUrl": "https://avatars.githubusercontent.com/u/55779084?v=4"
+      },
+      {
+        "name": "Chao Zhang",
+        "username": "tokers",
+        "githubUsername": "tokers",
+        "avatarUrl": "https://avatars.githubusercontent.com/u/10428333?v=4"
+      },
+      {
+        "name": "Joey Ma",
+        "username": "majunjie",
+        "githubUsername": "imjoey",
+        "avatarUrl": "https://avatars.githubusercontent.com/u/2542401?v=4"
+      },
+      {
+        "name": "Ke Tang",
+        "username": "tangke",
+        "githubUsername": "supermario1990",
+        "avatarUrl": "https://avatars.githubusercontent.com/u/8428531?v=4"
+      },
+      {
+        "name": "Li Zhiyong",
+        "username": "lizhiyong",
+        "githubUsername": "zhiyong0804",
+        "avatarUrl": "https://avatars.githubusercontent.com/u/15864088?v=4"
+      },
+      {
+        "name": "Shuyang Wu",
+        "username": "shuyangw",
+        "githubUsername": "yiyiyimu",
+        "avatarUrl": "https://avatars.githubusercontent.com/u/34589752?v=4"
+      },
+      {
+        "name": "Suo Zhang",
+        "username": "coolsoul",
+        "githubUsername": "soulsoul",
+        "avatarUrl": "https://avatars.githubusercontent.com/u/4963471?v=4"
+      },
+      {
+        "name": "Xinxin Zhu",
+        "username": "starsz",
+        "githubUsername": "starsz",
+        "avatarUrl": "https://avatars.githubusercontent.com/u/25628854?v=4"
+      },
+      {
+        "name": "Yi Sun",
+        "username": "sunyi",
+        "githubUsername": "LiteSun",
+        "avatarUrl": "https://avatars.githubusercontent.com/u/31329157?v=4"
+      },
+      {
+        "name": "Yong Li",
+        "username": "liyong",
+        "githubUsername": "chnliyong",
+        "avatarUrl": "https://avatars.githubusercontent.com/u/4197225?v=4"
+      },
+      {
+        "name": "Zeping Bai",
+        "username": "bzp2010",
+        "githubUsername": "bzp2010",
+        "avatarUrl": "https://avatars.githubusercontent.com/u/8078418?v=4"
+      }
+    ]
+  }
+]
diff --git a/zh/docs/apisix/introduction/index.html b/zh/docs/apisix/introduction/index.html
new file mode 100644
index 0000000..2c4b33e
--- /dev/null
+++ b/zh/docs/apisix/introduction/index.html
@@ -0,0 +1,36 @@
+<!doctype html>
+<html lang="zh">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
+<link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/zh/opensearch.xml">
+<link rel="alternate" type="application/rss+xml" href="/zh/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Introduction | Apache APISIX™</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docsearch:language" content="zh"><meta data-react-helmet="true" name="docsearch:version" content="current"><meta data-react-helmet="true" name="docsearch:docusaurus_tag" content="docs-do [...]
+<link rel="preload" href="/zh/assets/js/styles.d25a02cf.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.c157ebee.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.20ae8921.js" as="script">
+<link rel="preload" href="/zh/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/zh/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/zh/assets/js/1be78505.0c1819df.js" as="script">
+<link rel="preload" href="/zh/assets/js/d73fca9b.42736b26.js" as="script">
+<link rel="preload" href="/zh/assets/js/17896441.ab569ce4.js" as="script">
+<link rel="preload" href="/zh/assets/js/1b2ed0ef.1ea9785f.js" as="script">
+</head>
+<body>
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+<script src="/zh/assets/js/styles.d25a02cf.js"></script>
+<script src="/zh/assets/js/runtime~main.c157ebee.js"></script>
+<script src="/zh/assets/js/main.20ae8921.js"></script>
+<script src="/zh/assets/js/1.b21fad17.js"></script>
+<script src="/zh/assets/js/2.c74b4887.js"></script>
+<script src="/zh/assets/js/1be78505.0c1819df.js"></script>
+<script src="/zh/assets/js/d73fca9b.42736b26.js"></script>
+<script src="/zh/assets/js/17896441.ab569ce4.js"></script>
+<script src="/zh/assets/js/1b2ed0ef.1ea9785f.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/zh/docs/dashboard/introduction/index.html b/zh/docs/dashboard/introduction/index.html
new file mode 100644
index 0000000..688bea8
--- /dev/null
+++ b/zh/docs/dashboard/introduction/index.html
@@ -0,0 +1,36 @@
+<!doctype html>
+<html lang="zh">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
+<link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/zh/opensearch.xml">
+<link rel="alternate" type="application/rss+xml" href="/zh/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Introduction | Apache APISIX™</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docsearch:language" content="zh"><meta data-react-helmet="true" name="docsearch:version" content="current"><meta data-react-helmet="true" name="docsearch:docusaurus_tag" content="docs-do [...]
+<link rel="preload" href="/zh/assets/js/styles.d25a02cf.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.c157ebee.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.20ae8921.js" as="script">
+<link rel="preload" href="/zh/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/zh/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/zh/assets/js/1be78505.0c1819df.js" as="script">
+<link rel="preload" href="/zh/assets/js/f243156b.3b8ec092.js" as="script">
+<link rel="preload" href="/zh/assets/js/17896441.ab569ce4.js" as="script">
+<link rel="preload" href="/zh/assets/js/6f9b6084.47c7a420.js" as="script">
+</head>
+<body>
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+<script src="/zh/assets/js/styles.d25a02cf.js"></script>
+<script src="/zh/assets/js/runtime~main.c157ebee.js"></script>
+<script src="/zh/assets/js/main.20ae8921.js"></script>
+<script src="/zh/assets/js/1.b21fad17.js"></script>
+<script src="/zh/assets/js/2.c74b4887.js"></script>
+<script src="/zh/assets/js/1be78505.0c1819df.js"></script>
+<script src="/zh/assets/js/f243156b.3b8ec092.js"></script>
+<script src="/zh/assets/js/17896441.ab569ce4.js"></script>
+<script src="/zh/assets/js/6f9b6084.47c7a420.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/zh/docs/general/2fa/index.html b/zh/docs/general/2fa/index.html
new file mode 100644
index 0000000..7f861ee
--- /dev/null
+++ b/zh/docs/general/2fa/index.html
@@ -0,0 +1,36 @@
+<!doctype html>
+<html lang="zh">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
+<link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/zh/opensearch.xml">
+<link rel="alternate" type="application/rss+xml" href="/zh/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">2FA | Apache APISIX™</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docsearch:language" content="zh"><meta data-react-helmet="true" name="docsearch:version" content="current"><meta data-react-helmet="true" name="docsearch:docusaurus_tag" content="docs-default-cur [...]
+<link rel="preload" href="/zh/assets/js/styles.d25a02cf.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.c157ebee.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.20ae8921.js" as="script">
+<link rel="preload" href="/zh/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/zh/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/zh/assets/js/1be78505.0c1819df.js" as="script">
+<link rel="preload" href="/zh/assets/js/935f2afb.2a534bfd.js" as="script">
+<link rel="preload" href="/zh/assets/js/17896441.ab569ce4.js" as="script">
+<link rel="preload" href="/zh/assets/js/3dc9f306.409bfade.js" as="script">
+</head>
+<body>
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+<script src="/zh/assets/js/styles.d25a02cf.js"></script>
+<script src="/zh/assets/js/runtime~main.c157ebee.js"></script>
+<script src="/zh/assets/js/main.20ae8921.js"></script>
+<script src="/zh/assets/js/1.b21fad17.js"></script>
+<script src="/zh/assets/js/2.c74b4887.js"></script>
+<script src="/zh/assets/js/1be78505.0c1819df.js"></script>
+<script src="/zh/assets/js/935f2afb.2a534bfd.js"></script>
+<script src="/zh/assets/js/17896441.ab569ce4.js"></script>
+<script src="/zh/assets/js/3dc9f306.409bfade.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/zh/docs/general/committer-guide/index.html b/zh/docs/general/committer-guide/index.html
new file mode 100644
index 0000000..99a27f8
--- /dev/null
+++ b/zh/docs/general/committer-guide/index.html
@@ -0,0 +1,36 @@
+<!doctype html>
+<html lang="zh">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
+<link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/zh/opensearch.xml">
+<link rel="alternate" type="application/rss+xml" href="/zh/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Committer Guide | Apache APISIX™</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docsearch:language" content="zh"><meta data-react-helmet="true" name="docsearch:version" content="current"><meta data-react-helmet="true" name="docsearch:docusaurus_tag" content="docs [...]
+<link rel="preload" href="/zh/assets/js/styles.d25a02cf.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.c157ebee.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.20ae8921.js" as="script">
+<link rel="preload" href="/zh/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/zh/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/zh/assets/js/1be78505.0c1819df.js" as="script">
+<link rel="preload" href="/zh/assets/js/935f2afb.2a534bfd.js" as="script">
+<link rel="preload" href="/zh/assets/js/17896441.ab569ce4.js" as="script">
+<link rel="preload" href="/zh/assets/js/8e784bf3.b5256bf0.js" as="script">
+</head>
+<body>
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+<script src="/zh/assets/js/styles.d25a02cf.js"></script>
+<script src="/zh/assets/js/runtime~main.c157ebee.js"></script>
+<script src="/zh/assets/js/main.20ae8921.js"></script>
+<script src="/zh/assets/js/1.b21fad17.js"></script>
+<script src="/zh/assets/js/2.c74b4887.js"></script>
+<script src="/zh/assets/js/1be78505.0c1819df.js"></script>
+<script src="/zh/assets/js/935f2afb.2a534bfd.js"></script>
+<script src="/zh/assets/js/17896441.ab569ce4.js"></script>
+<script src="/zh/assets/js/8e784bf3.b5256bf0.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/zh/docs/general/contributor-guide/index.html b/zh/docs/general/contributor-guide/index.html
new file mode 100644
index 0000000..0cf2d89
--- /dev/null
+++ b/zh/docs/general/contributor-guide/index.html
@@ -0,0 +1,36 @@
+<!doctype html>
+<html lang="zh">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
+<link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/zh/opensearch.xml">
+<link rel="alternate" type="application/rss+xml" href="/zh/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Contributor Guide | Apache APISIX™</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docsearch:language" content="zh"><meta data-react-helmet="true" name="docsearch:version" content="current"><meta data-react-helmet="true" name="docsearch:docusaurus_tag" content="do [...]
+<link rel="preload" href="/zh/assets/js/styles.d25a02cf.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.c157ebee.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.20ae8921.js" as="script">
+<link rel="preload" href="/zh/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/zh/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/zh/assets/js/1be78505.0c1819df.js" as="script">
+<link rel="preload" href="/zh/assets/js/935f2afb.2a534bfd.js" as="script">
+<link rel="preload" href="/zh/assets/js/17896441.ab569ce4.js" as="script">
+<link rel="preload" href="/zh/assets/js/adbb350b.cfedb21c.js" as="script">
+</head>
+<body>
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+<script src="/zh/assets/js/styles.d25a02cf.js"></script>
+<script src="/zh/assets/js/runtime~main.c157ebee.js"></script>
+<script src="/zh/assets/js/main.20ae8921.js"></script>
+<script src="/zh/assets/js/1.b21fad17.js"></script>
+<script src="/zh/assets/js/2.c74b4887.js"></script>
+<script src="/zh/assets/js/1be78505.0c1819df.js"></script>
+<script src="/zh/assets/js/935f2afb.2a534bfd.js"></script>
+<script src="/zh/assets/js/17896441.ab569ce4.js"></script>
+<script src="/zh/assets/js/adbb350b.cfedb21c.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/zh/docs/general/release-guide/index.html b/zh/docs/general/release-guide/index.html
new file mode 100644
index 0000000..5a71de1
--- /dev/null
+++ b/zh/docs/general/release-guide/index.html
@@ -0,0 +1,82 @@
+<!doctype html>
+<html lang="zh">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
+<link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/zh/opensearch.xml">
+<link rel="alternate" type="application/rss+xml" href="/zh/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Release Guide | Apache APISIX™</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docsearch:language" content="zh"><meta data-react-helmet="true" name="docsearch:version" content="current"><meta data-react-helmet="true" name="docsearch:docusaurus_tag" content="docs-d [...]
+<link rel="preload" href="/zh/assets/js/styles.d25a02cf.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.c157ebee.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.20ae8921.js" as="script">
+<link rel="preload" href="/zh/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/zh/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/zh/assets/js/1be78505.0c1819df.js" as="script">
+<link rel="preload" href="/zh/assets/js/935f2afb.2a534bfd.js" as="script">
+<link rel="preload" href="/zh/assets/js/17896441.ab569ce4.js" as="script">
+<link rel="preload" href="/zh/assets/js/7af3052c.0d0ad0ce.js" as="script">
+</head>
+<body>
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Please select what kind of key you want:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(1) RSA and RSA (default)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(2) DSA and Elgamal</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(3) DSA (sign only)</span></div><div class="token-line" style="color [...]
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">GnuPG needs to construct a user ID to identify your key.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Real name: ${Enter your username}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Email address: ${Enter your email address}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Comment: ${Enter comments}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">You selected this USER-ID:</span></div><div class=" [...]
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">You need a Passphrase to protect your secret key. # Enter passphrase</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_Ue-o">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_ [...]
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">/home/resty/.gnupg/pubring.gpg</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">------------------------------</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">pub 4096R/30B5FD72 2020-01-02</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">uid Yuansheng Wang &lt;membphis@apache.org&gt;</span></div><div [...]
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">gpg: sending key 30B5FD72 to hkp server pool.sks-keyservers.net</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_Ue-o">Copy</button></div></div><p><code>pool.sks-keyservers.net</code> is one of the pub key servers, the pub key will be automatically synchronized between each server, just choose anyone.</p><h3><a aria-hidden="true" tabindex="-1" class="anc [...]
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">/home/resty/.gnupg/pubring.gpg</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">------------------------------</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">pub 4096R/30B5FD72 2020-01-02</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Key fingerprint = 0F91 BE0A 55A7 B22F DE1A CEEC 3352 48FD 30B5  [...]
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">$ ls</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">KEYS</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_Ue-o">Copy</button></div></div><p>Export the public key and append it to the KEYS file.</p><div class="mdxCodeBlock_3lFL"><div class="codeBlockContent_hGly"><div tabindex="0" class="prism-code language-sh codeBlock_23N8 thin-scrollbar"><div class="codeBlockLines_39YC" style="color:#bfc7d5;background-c [...]
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># download repo</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">git clone -b v$APISIX_VERSION git@github.com:apache/apisix.git apache-apisix-$APISIX_VERSION</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># check version</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">$ cd apache-apisix-$APISIX_VERSION &amp;&amp; ./utils/check-version.sh $APISIX_VERSION &amp;&amp; cd ..</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># make tar package / asc / sha512</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">$ cd apache-apisix-$APISIX_VERSION &amp;&amp; make release-src VERSION=$APISIX_VERSION</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">$ mv ./release/* ../ &amp;&amp; cd ..</span></div><div class="token-line" style="color:#bfc7d5"><span class="token pla [...]
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># remove apache-apisix-1.0</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">$ rm -rf apache-apisix-$APISIX_VERSION</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># check files</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">$ cd .. &amp;&amp; tree</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">├── 1.0</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">│   ├── apache-apisix-1 [...]
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">1 directory, 4 files</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># add files to SVN</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">$ svn add *</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">A         1.0</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">A  (bin)  1.0/apache-apisix-1.0-src.tar.gz.asc</span></div><div class="token-line" style="color:#bfc7d5"><span [...]
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># commit to Apache SVN</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">$ svn --username=${Apache username} commit -m &quot;release 1.0&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Adding         1.0</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Adding  (bin)  1.0/apache-apisix-1.0-src.ta [...]
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Release notes:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">https://github.com/apache/apisix/blob/2.0/CHANGELOG.md#200</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">The release candidates:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">https://dist.apache.org/repos/dist/dev/apisix/2.0/</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Git tag for the release:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">https://github.com/apache/apisix/tree/2.0</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Release Commit ID:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">https://github.com/apache/apisix/commit/79be83dd8adfbd5a1d98e0685c5db67166adac3f</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Keys to verify the Release Candidate:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">https://dist.apache.org/repos/dist/dev/apisix/KEYS</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Steps to validating the release:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">1. Download the release</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">wget</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">https://dist.apache.org/repos/dist/dev/apisix/2.0/apache-apisix-2.0-src.tgz</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2. Checksums and signatures</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">wget https://dist.apache.org/repos/dist/dev/apisix/KEYS</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">wget</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">https://dist.apache.org/repos/dist/dev/apisix/2.0/apache-apisix-2.0-src.tgz.asc</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">wget</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">https://dist.apache.org/repos/dist/dev/apisix/2.0/apache-apisix-2.0-src.tgz.sha512</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">gpg --import KEYS</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">shasum -c apache-apisix-2.0-src.tgz.sha512</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">gpg --verify apache-apisix-2.0-src.tgz.asc apache-apisix-2.0-src.tgz</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">3. Unzip and Check files</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">tar zxvf apache-apisix-2.0-src.tgz</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">4. Build Apache APISIX:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">https://github.com/apache/apisix/blob/2.0/doc/how-to-build.md#installation-via-source-release</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">The vote will be open for at least 72 hours or until necessary number of</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">votes are reached.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Please vote accordingly:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">[ ] +1 approve</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">[ ] +0 no opinion</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">[ ] -1 disapprove with the reason</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_Ue-o">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_2LWZ" id="send-vote-result-thread-to-the-dev-mailing-list"></a>Send VOTE RESULT thread to the dev mailing list<a class="hash-link" href="#send-vote-result-thread-to-the-dev-mailing-list" title="Direct link to heading">#</a></h3><p>Click <a href="https://lists.apache.org/thread.html/r9153da7 [...]
+<script src="/zh/assets/js/styles.d25a02cf.js"></script>
+<script src="/zh/assets/js/runtime~main.c157ebee.js"></script>
+<script src="/zh/assets/js/main.20ae8921.js"></script>
+<script src="/zh/assets/js/1.b21fad17.js"></script>
+<script src="/zh/assets/js/2.c74b4887.js"></script>
+<script src="/zh/assets/js/1be78505.0c1819df.js"></script>
+<script src="/zh/assets/js/935f2afb.2a534bfd.js"></script>
+<script src="/zh/assets/js/17896441.ab569ce4.js"></script>
+<script src="/zh/assets/js/7af3052c.0d0ad0ce.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/zh/docs/general/security/index.html b/zh/docs/general/security/index.html
new file mode 100644
index 0000000..f7a6b4e
--- /dev/null
+++ b/zh/docs/general/security/index.html
@@ -0,0 +1,36 @@
+<!doctype html>
+<html lang="zh">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
+<link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/zh/opensearch.xml">
+<link rel="alternate" type="application/rss+xml" href="/zh/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Security | Apache APISIX™</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docsearch:language" content="zh"><meta data-react-helmet="true" name="docsearch:version" content="current"><meta data-react-helmet="true" name="docsearch:docusaurus_tag" content="docs-defaul [...]
+<link rel="preload" href="/zh/assets/js/styles.d25a02cf.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.c157ebee.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.20ae8921.js" as="script">
+<link rel="preload" href="/zh/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/zh/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/zh/assets/js/1be78505.0c1819df.js" as="script">
+<link rel="preload" href="/zh/assets/js/935f2afb.2a534bfd.js" as="script">
+<link rel="preload" href="/zh/assets/js/17896441.ab569ce4.js" as="script">
+<link rel="preload" href="/zh/assets/js/66fbb9c2.5fc56aad.js" as="script">
+</head>
+<body>
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+<script src="/zh/assets/js/styles.d25a02cf.js"></script>
+<script src="/zh/assets/js/runtime~main.c157ebee.js"></script>
+<script src="/zh/assets/js/main.20ae8921.js"></script>
+<script src="/zh/assets/js/1.b21fad17.js"></script>
+<script src="/zh/assets/js/2.c74b4887.js"></script>
+<script src="/zh/assets/js/1be78505.0c1819df.js"></script>
+<script src="/zh/assets/js/935f2afb.2a534bfd.js"></script>
+<script src="/zh/assets/js/17896441.ab569ce4.js"></script>
+<script src="/zh/assets/js/66fbb9c2.5fc56aad.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/zh/docs/general/subscribe-guide/index.html b/zh/docs/general/subscribe-guide/index.html
new file mode 100644
index 0000000..0090990
--- /dev/null
+++ b/zh/docs/general/subscribe-guide/index.html
@@ -0,0 +1,36 @@
+<!doctype html>
+<html lang="zh">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
+<link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/zh/opensearch.xml">
+<link rel="alternate" type="application/rss+xml" href="/zh/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Subscribe Guide | Apache APISIX™</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docsearch:language" content="zh"><meta data-react-helmet="true" name="docsearch:version" content="current"><meta data-react-helmet="true" name="docsearch:docusaurus_tag" content="docs [...]
+<link rel="preload" href="/zh/assets/js/styles.d25a02cf.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.c157ebee.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.20ae8921.js" as="script">
+<link rel="preload" href="/zh/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/zh/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/zh/assets/js/1be78505.0c1819df.js" as="script">
+<link rel="preload" href="/zh/assets/js/935f2afb.2a534bfd.js" as="script">
+<link rel="preload" href="/zh/assets/js/17896441.ab569ce4.js" as="script">
+<link rel="preload" href="/zh/assets/js/50facf8e.d92bb643.js" as="script">
+</head>
+<body>
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+<script src="/zh/assets/js/styles.d25a02cf.js"></script>
+<script src="/zh/assets/js/runtime~main.c157ebee.js"></script>
+<script src="/zh/assets/js/main.20ae8921.js"></script>
+<script src="/zh/assets/js/1.b21fad17.js"></script>
+<script src="/zh/assets/js/2.c74b4887.js"></script>
+<script src="/zh/assets/js/1be78505.0c1819df.js"></script>
+<script src="/zh/assets/js/935f2afb.2a534bfd.js"></script>
+<script src="/zh/assets/js/17896441.ab569ce4.js"></script>
+<script src="/zh/assets/js/50facf8e.d92bb643.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/zh/docs/index.html b/zh/docs/index.html
new file mode 100644
index 0000000..266e466
--- /dev/null
+++ b/zh/docs/index.html
@@ -0,0 +1,32 @@
+<!doctype html>
+<html lang="zh">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
+<link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/zh/opensearch.xml">
+<link rel="alternate" type="application/rss+xml" href="/zh/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Apache APISIX™"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:url" content="https://apisix.apache.org//zh/docs"><meta data-react-helmet="true" name="docsearch:language" content="zh [...]
+<link rel="preload" href="/zh/assets/js/styles.d25a02cf.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.c157ebee.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.20ae8921.js" as="script">
+<link rel="preload" href="/zh/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/zh/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/zh/assets/js/3.e5911a24.js" as="script">
+<link rel="preload" href="/zh/assets/js/25b7c3f2.1e053d90.js" as="script">
+</head>
+<body>
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+<script src="/zh/assets/js/styles.d25a02cf.js"></script>
+<script src="/zh/assets/js/runtime~main.c157ebee.js"></script>
+<script src="/zh/assets/js/main.20ae8921.js"></script>
+<script src="/zh/assets/js/1.b21fad17.js"></script>
+<script src="/zh/assets/js/2.c74b4887.js"></script>
+<script src="/zh/assets/js/3.e5911a24.js"></script>
+<script src="/zh/assets/js/25b7c3f2.1e053d90.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/zh/docs/ingress-controller/introduction/index.html b/zh/docs/ingress-controller/introduction/index.html
new file mode 100644
index 0000000..346e622
--- /dev/null
+++ b/zh/docs/ingress-controller/introduction/index.html
@@ -0,0 +1,36 @@
+<!doctype html>
+<html lang="zh">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
+<link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/zh/opensearch.xml">
+<link rel="alternate" type="application/rss+xml" href="/zh/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Introduction | Apache APISIX™</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docsearch:language" content="zh"><meta data-react-helmet="true" name="docsearch:version" content="current"><meta data-react-helmet="true" name="docsearch:docusaurus_tag" content="docs-do [...]
+<link rel="preload" href="/zh/assets/js/styles.d25a02cf.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.c157ebee.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.20ae8921.js" as="script">
+<link rel="preload" href="/zh/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/zh/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/zh/assets/js/1be78505.0c1819df.js" as="script">
+<link rel="preload" href="/zh/assets/js/b4a67526.ad72e997.js" as="script">
+<link rel="preload" href="/zh/assets/js/17896441.ab569ce4.js" as="script">
+<link rel="preload" href="/zh/assets/js/30788500.8f19702c.js" as="script">
+</head>
+<body>
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+<script src="/zh/assets/js/styles.d25a02cf.js"></script>
+<script src="/zh/assets/js/runtime~main.c157ebee.js"></script>
+<script src="/zh/assets/js/main.20ae8921.js"></script>
+<script src="/zh/assets/js/1.b21fad17.js"></script>
+<script src="/zh/assets/js/2.c74b4887.js"></script>
+<script src="/zh/assets/js/1be78505.0c1819df.js"></script>
+<script src="/zh/assets/js/b4a67526.ad72e997.js"></script>
+<script src="/zh/assets/js/17896441.ab569ce4.js"></script>
+<script src="/zh/assets/js/30788500.8f19702c.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/downloads/ProjectCard/index.html b/zh/downloads/ProjectCard/index.html
similarity index 73%
copy from downloads/ProjectCard/index.html
copy to zh/downloads/ProjectCard/index.html
index 7f35c2d..cabe2ff 100644
--- a/downloads/ProjectCard/index.html
+++ b/zh/downloads/ProjectCard/index.html
@@ -3,28 +3,28 @@
 <head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-alpha.70">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true"></title><link rel="stylesheet" href="/styles.6b3ccb20.css">
-<link rel="preload" href="/styles.f6196f2d.js" as="script">
-<link rel="preload" href="/runtime~main.dfaa07c6.js" as="script">
-<link rel="preload" href="/main.be0eaecb.js" as="script">
-<link rel="preload" href="/3.538bc209.js" as="script">
-<link rel="preload" href="/98c69322.58eaa6a3.js" as="script">
-<link rel="preload" href="/47f8a22a.39ee8202.js" as="script">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
+<link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/zh/opensearch.xml">
+<link rel="alternate" type="application/rss+xml" href="/zh/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true"></title><link rel="stylesheet" href="/zh/assets/css/styles.545fc2a3.css">
+<link rel="preload" href="/zh/assets/js/styles.d25a02cf.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.c157ebee.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.20ae8921.js" as="script">
+<link rel="preload" href="/zh/assets/js/3.e5911a24.js" as="script">
+<link rel="preload" href="/zh/assets/js/98c69322.bcfd2dda.js" as="script">
+<link rel="preload" href="/zh/assets/js/47f8a22a.b9d7e773.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div class="ProjectCard__Card-sc-12v8c3p-0 fUOFUE"><div class="ProjectCard__LeftSide-sc-12v8c3p-1 ewHYSJ"><a href="https://github.com/undefined" target="_blank" class="ProjectCard__Title-sc-12v8c3p-2 eXqIcO"><span class="ProjectCard__ShapeBeforeTitle-sc-12v8c3p-4 kjTfns"><svg aria-hidden="true" data-prefix="fas" data-icon="hexagon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512" class="hexagon_svg__svg-inline--fa hexagon_svg__fa-hexagon hexagon_svg__fa-w-18 hexagon_svg__fa-7x">< [...]
-<script src="/styles.f6196f2d.js"></script>
-<script src="/runtime~main.dfaa07c6.js"></script>
-<script src="/main.be0eaecb.js"></script>
-<script src="/3.538bc209.js"></script>
-<script src="/98c69322.58eaa6a3.js"></script>
-<script src="/47f8a22a.39ee8202.js"></script>
+<script src="/zh/assets/js/styles.d25a02cf.js"></script>
+<script src="/zh/assets/js/runtime~main.c157ebee.js"></script>
+<script src="/zh/assets/js/main.20ae8921.js"></script>
+<script src="/zh/assets/js/3.e5911a24.js"></script>
+<script src="/zh/assets/js/98c69322.bcfd2dda.js"></script>
+<script src="/zh/assets/js/47f8a22a.b9d7e773.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/downloads/index.html b/zh/downloads/index.html
new file mode 100644
index 0000000..1f0abf0
--- /dev/null
+++ b/zh/downloads/index.html
@@ -0,0 +1,37 @@
+<!doctype html>
+<html lang="zh">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
+<link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/zh/opensearch.xml">
+<link rel="alternate" type="application/rss+xml" href="/zh/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Apache APISIX™"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:url" content="https://apisix.apache.org//zh/downloads/"><meta data-react-helmet="true" name="docsearch:language" conte [...]
+<link rel="preload" href="/zh/assets/js/styles.d25a02cf.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.c157ebee.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.20ae8921.js" as="script">
+<link rel="preload" href="/zh/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/zh/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/zh/assets/js/3.e5911a24.js" as="script">
+<link rel="preload" href="/zh/assets/js/98c69322.bcfd2dda.js" as="script">
+<link rel="preload" href="/zh/assets/js/47f8a22a.b9d7e773.js" as="script">
+</head>
+<body>
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># or</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">pgp -ka KEYS</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_Ue-o">Copy</button></div><br>To verify the binaries/sources you can download the relevant asc files for it from main distribution directory and follow the below guide.<div class="codeBlockContent_hGly"><di [...]
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># or</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">pgpv apache-apisix-********.asc</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># or</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">pgp apache-apisix-********.asc</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_Ue-o">Copy</button></div></div></div></div></div><footer class="footer"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">ASF</h [...]
+<script src="/zh/assets/js/styles.d25a02cf.js"></script>
+<script src="/zh/assets/js/runtime~main.c157ebee.js"></script>
+<script src="/zh/assets/js/main.20ae8921.js"></script>
+<script src="/zh/assets/js/1.b21fad17.js"></script>
+<script src="/zh/assets/js/2.c74b4887.js"></script>
+<script src="/zh/assets/js/3.e5911a24.js"></script>
+<script src="/zh/assets/js/98c69322.bcfd2dda.js"></script>
+<script src="/zh/assets/js/47f8a22a.b9d7e773.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/zh/events/2020/12/23/release-apache-apisix-ingress-controller-0.1.0/index.html b/zh/events/2020/12/23/release-apache-apisix-ingress-controller-0.1.0/index.html
new file mode 100644
index 0000000..52b46c3
--- /dev/null
+++ b/zh/events/2020/12/23/release-apache-apisix-ingress-controller-0.1.0/index.html
@@ -0,0 +1,36 @@
+<!doctype html>
+<html lang="zh">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
+<link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/zh/opensearch.xml">
+<link rel="alternate" type="application/rss+xml" href="/zh/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Release Apache APISIX Ingress Controller 0.1.0 | Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Release Apache APISIX Ingress Controller 0.1.0 | Apache APISIX™"><meta data-react-helmet="true" property="og:description" content="This release mainly improve basic features, bugfix and adds test cases."><meta  [...]
+<link rel="preload" href="/zh/assets/js/styles.d25a02cf.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.c157ebee.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.20ae8921.js" as="script">
+<link rel="preload" href="/zh/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/zh/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/zh/assets/js/4.a448f392.js" as="script">
+<link rel="preload" href="/zh/assets/js/ccc49370.938f9db4.js" as="script">
+<link rel="preload" href="/zh/assets/js/f7488fe8.ed219fa4.js" as="script">
+<link rel="preload" href="/zh/assets/js/12e5767f.d61c8e43.js" as="script">
+</head>
+<body>
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+<script src="/zh/assets/js/styles.d25a02cf.js"></script>
+<script src="/zh/assets/js/runtime~main.c157ebee.js"></script>
+<script src="/zh/assets/js/main.20ae8921.js"></script>
+<script src="/zh/assets/js/1.b21fad17.js"></script>
+<script src="/zh/assets/js/2.c74b4887.js"></script>
+<script src="/zh/assets/js/4.a448f392.js"></script>
+<script src="/zh/assets/js/ccc49370.938f9db4.js"></script>
+<script src="/zh/assets/js/f7488fe8.ed219fa4.js"></script>
+<script src="/zh/assets/js/12e5767f.d61c8e43.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/zh/events/2021/01/19/release-apache-apisix-ingress-controller-0.2.0/index.html b/zh/events/2021/01/19/release-apache-apisix-ingress-controller-0.2.0/index.html
new file mode 100644
index 0000000..0290c40
--- /dev/null
+++ b/zh/events/2021/01/19/release-apache-apisix-ingress-controller-0.2.0/index.html
@@ -0,0 +1,36 @@
+<!doctype html>
+<html lang="zh">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
+<link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/zh/opensearch.xml">
+<link rel="alternate" type="application/rss+xml" href="/zh/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Release Apache APISIX Ingress Controller 0.2.0 | Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Release Apache APISIX Ingress Controller 0.2.0 | Apache APISIX™"><meta data-react-helmet="true" property="og:description" content="This release mainly improve basic features, bugfix and adds test cases."><meta  [...]
+<link rel="preload" href="/zh/assets/js/styles.d25a02cf.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.c157ebee.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.20ae8921.js" as="script">
+<link rel="preload" href="/zh/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/zh/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/zh/assets/js/4.a448f392.js" as="script">
+<link rel="preload" href="/zh/assets/js/ccc49370.938f9db4.js" as="script">
+<link rel="preload" href="/zh/assets/js/f7488fe8.ed219fa4.js" as="script">
+<link rel="preload" href="/zh/assets/js/4eed9ed2.6483805d.js" as="script">
+</head>
+<body>
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+<script src="/zh/assets/js/styles.d25a02cf.js"></script>
+<script src="/zh/assets/js/runtime~main.c157ebee.js"></script>
+<script src="/zh/assets/js/main.20ae8921.js"></script>
+<script src="/zh/assets/js/1.b21fad17.js"></script>
+<script src="/zh/assets/js/2.c74b4887.js"></script>
+<script src="/zh/assets/js/4.a448f392.js"></script>
+<script src="/zh/assets/js/ccc49370.938f9db4.js"></script>
+<script src="/zh/assets/js/f7488fe8.ed219fa4.js"></script>
+<script src="/zh/assets/js/4eed9ed2.6483805d.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/zh/events/2021/02/09/release-apache-apisix-2.3/index.html b/zh/events/2021/02/09/release-apache-apisix-2.3/index.html
new file mode 100644
index 0000000..78d707a
--- /dev/null
+++ b/zh/events/2021/02/09/release-apache-apisix-2.3/index.html
@@ -0,0 +1,36 @@
+<!doctype html>
+<html lang="zh">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
+<link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/zh/opensearch.xml">
+<link rel="alternate" type="application/rss+xml" href="/zh/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Release Apache APISIX 2.3 | Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Release Apache APISIX 2.3 | Apache APISIX™"><meta data-react-helmet="true" property="og:description" content="Change"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" p [...]
+<link rel="preload" href="/zh/assets/js/styles.d25a02cf.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.c157ebee.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.20ae8921.js" as="script">
+<link rel="preload" href="/zh/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/zh/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/zh/assets/js/4.a448f392.js" as="script">
+<link rel="preload" href="/zh/assets/js/ccc49370.938f9db4.js" as="script">
+<link rel="preload" href="/zh/assets/js/f7488fe8.ed219fa4.js" as="script">
+<link rel="preload" href="/zh/assets/js/41b4926b.702246a9.js" as="script">
+</head>
+<body>
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+<script src="/zh/assets/js/styles.d25a02cf.js"></script>
+<script src="/zh/assets/js/runtime~main.c157ebee.js"></script>
+<script src="/zh/assets/js/main.20ae8921.js"></script>
+<script src="/zh/assets/js/1.b21fad17.js"></script>
+<script src="/zh/assets/js/2.c74b4887.js"></script>
+<script src="/zh/assets/js/4.a448f392.js"></script>
+<script src="/zh/assets/js/ccc49370.938f9db4.js"></script>
+<script src="/zh/assets/js/f7488fe8.ed219fa4.js"></script>
+<script src="/zh/assets/js/41b4926b.702246a9.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/zh/events/2021/02/11/release-apache-apisix-ingress-controller-0.3.0/index.html b/zh/events/2021/02/11/release-apache-apisix-ingress-controller-0.3.0/index.html
new file mode 100644
index 0000000..13f70df
--- /dev/null
+++ b/zh/events/2021/02/11/release-apache-apisix-ingress-controller-0.3.0/index.html
@@ -0,0 +1,36 @@
+<!doctype html>
+<html lang="zh">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
+<link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/zh/opensearch.xml">
+<link rel="alternate" type="application/rss+xml" href="/zh/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Release Apache APISIX Ingress Controller 0.3.0 | Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Release Apache APISIX Ingress Controller 0.3.0 | Apache APISIX™"><meta data-react-helmet="true" property="og:description" content="This release mainly improves the program robustness and adds some features."><m [...]
+<link rel="preload" href="/zh/assets/js/styles.d25a02cf.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.c157ebee.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.20ae8921.js" as="script">
+<link rel="preload" href="/zh/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/zh/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/zh/assets/js/4.a448f392.js" as="script">
+<link rel="preload" href="/zh/assets/js/ccc49370.938f9db4.js" as="script">
+<link rel="preload" href="/zh/assets/js/f7488fe8.ed219fa4.js" as="script">
+<link rel="preload" href="/zh/assets/js/1be5d2e8.8711092b.js" as="script">
+</head>
+<body>
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+<script src="/zh/assets/js/styles.d25a02cf.js"></script>
+<script src="/zh/assets/js/runtime~main.c157ebee.js"></script>
+<script src="/zh/assets/js/main.20ae8921.js"></script>
+<script src="/zh/assets/js/1.b21fad17.js"></script>
+<script src="/zh/assets/js/2.c74b4887.js"></script>
+<script src="/zh/assets/js/4.a448f392.js"></script>
+<script src="/zh/assets/js/ccc49370.938f9db4.js"></script>
+<script src="/zh/assets/js/f7488fe8.ed219fa4.js"></script>
+<script src="/zh/assets/js/1be5d2e8.8711092b.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/zh/events/2021/02/12/release-apache-apisix-dashboard-2.4/index.html b/zh/events/2021/02/12/release-apache-apisix-dashboard-2.4/index.html
new file mode 100644
index 0000000..7ddd17e
--- /dev/null
+++ b/zh/events/2021/02/12/release-apache-apisix-dashboard-2.4/index.html
@@ -0,0 +1,36 @@
+<!doctype html>
+<html lang="zh">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
+<link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/zh/opensearch.xml">
+<link rel="alternate" type="application/rss+xml" href="/zh/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Release Apache APISIX Dashboard 2.4 | Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Release Apache APISIX Dashboard 2.4 | Apache APISIX™"><meta data-react-helmet="true" property="og:description" content="This release mainly improves basic features, bugfix and adds test cases."><meta data-react-helmet="tr [...]
+<link rel="preload" href="/zh/assets/js/styles.d25a02cf.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.c157ebee.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.20ae8921.js" as="script">
+<link rel="preload" href="/zh/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/zh/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/zh/assets/js/4.a448f392.js" as="script">
+<link rel="preload" href="/zh/assets/js/ccc49370.938f9db4.js" as="script">
+<link rel="preload" href="/zh/assets/js/f7488fe8.ed219fa4.js" as="script">
+<link rel="preload" href="/zh/assets/js/d4de91ec.55c63e46.js" as="script">
+</head>
+<body>
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+<script src="/zh/assets/js/styles.d25a02cf.js"></script>
+<script src="/zh/assets/js/runtime~main.c157ebee.js"></script>
+<script src="/zh/assets/js/main.20ae8921.js"></script>
+<script src="/zh/assets/js/1.b21fad17.js"></script>
+<script src="/zh/assets/js/2.c74b4887.js"></script>
+<script src="/zh/assets/js/4.a448f392.js"></script>
+<script src="/zh/assets/js/ccc49370.938f9db4.js"></script>
+<script src="/zh/assets/js/f7488fe8.ed219fa4.js"></script>
+<script src="/zh/assets/js/d4de91ec.55c63e46.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/zh/events/atom.xml b/zh/events/atom.xml
new file mode 100644
index 0000000..022e6bf
--- /dev/null
+++ b/zh/events/atom.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<feed xmlns="http://www.w3.org/2005/Atom">
+    <id>https://apisix.apache.org/events</id>
+    <title>Apache APISIX™ Blog</title>
+    <updated>2021-02-12T00:00:00.000Z</updated>
+    <generator>https://github.com/jpmonette/feed</generator>
+    <link rel="alternate" href="https://apisix.apache.org/events"/>
+    <subtitle>Apache APISIX™ Blog</subtitle>
+    <icon>https://apisix.apache.org/img/favicon.png</icon>
+    <entry>
+        <title type="html"><![CDATA[Release Apache APISIX Dashboard 2.4]]></title>
+        <id>Release Apache APISIX Dashboard 2.4</id>
+        <link href="https://apisix.apache.org/zh/events/2021/02/12/release-apache-apisix-dashboard-2.4"/>
+        <updated>2021-02-12T00:00:00.000Z</updated>
+        <summary type="html"><![CDATA[This release mainly improves basic features, bugfix and adds test cases.]]></summary>
+    </entry>
+    <entry>
+        <title type="html"><![CDATA[Release Apache APISIX Ingress Controller 0.3.0]]></title>
+        <id>Release Apache APISIX Ingress Controller 0.3.0</id>
+        <link href="https://apisix.apache.org/zh/events/2021/02/11/release-apache-apisix-ingress-controller-0.3.0"/>
+        <updated>2021-02-11T00:00:00.000Z</updated>
+        <summary type="html"><![CDATA[This release mainly improves the program robustness and adds some features.]]></summary>
+    </entry>
+    <entry>
+        <title type="html"><![CDATA[Release Apache APISIX 2.3]]></title>
+        <id>Release Apache APISIX 2.3</id>
+        <link href="https://apisix.apache.org/zh/events/2021/02/09/release-apache-apisix-2.3"/>
+        <updated>2021-02-09T00:00:00.000Z</updated>
+        <summary type="html"><![CDATA[Change]]></summary>
+    </entry>
+    <entry>
+        <title type="html"><![CDATA[Release Apache APISIX Ingress Controller 0.2.0]]></title>
+        <id>Release Apache APISIX Ingress Controller 0.2.0</id>
+        <link href="https://apisix.apache.org/zh/events/2021/01/19/release-apache-apisix-ingress-controller-0.2.0"/>
+        <updated>2021-01-19T00:00:00.000Z</updated>
+        <summary type="html"><![CDATA[This release mainly improve basic features, bugfix and adds test cases.]]></summary>
+    </entry>
+    <entry>
+        <title type="html"><![CDATA[Release Apache APISIX Ingress Controller 0.1.0]]></title>
+        <id>Release Apache APISIX Ingress Controller 0.1.0</id>
+        <link href="https://apisix.apache.org/zh/events/2020/12/23/release-apache-apisix-ingress-controller-0.1.0"/>
+        <updated>2020-12-23T00:00:00.000Z</updated>
+        <summary type="html"><![CDATA[This release mainly improve basic features, bugfix and adds test cases.]]></summary>
+    </entry>
+</feed>
\ No newline at end of file
diff --git a/zh/events/index.html b/zh/events/index.html
new file mode 100644
index 0000000..afbdeac
--- /dev/null
+++ b/zh/events/index.html
@@ -0,0 +1,46 @@
+<!doctype html>
+<html lang="zh">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
+<link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/zh/opensearch.xml">
+<link rel="alternate" type="application/rss+xml" href="/zh/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Blog | Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Blog | Apache APISIX™"><meta data-react-helmet="true" property="og:description" content="Blog"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:url" content="https://apisix.apa [...]
+<link rel="preload" href="/zh/assets/js/styles.d25a02cf.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.c157ebee.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.20ae8921.js" as="script">
+<link rel="preload" href="/zh/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/zh/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/zh/assets/js/4.a448f392.js" as="script">
+<link rel="preload" href="/zh/assets/js/a6aa9e1f.c641128b.js" as="script">
+<link rel="preload" href="/zh/assets/js/f7488fe8.ed219fa4.js" as="script">
+<link rel="preload" href="/zh/assets/js/bacea567.49cd87f9.js" as="script">
+<link rel="preload" href="/zh/assets/js/c119cf3c.b661798c.js" as="script">
+<link rel="preload" href="/zh/assets/js/17dc512b.888d5c12.js" as="script">
+<link rel="preload" href="/zh/assets/js/c5594f1a.d180ea48.js" as="script">
+<link rel="preload" href="/zh/assets/js/fa919c95.75271be3.js" as="script">
+<link rel="preload" href="/zh/assets/js/7ecc8185.2402dced.js" as="script">
+</head>
+<body>
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+<script src="/zh/assets/js/styles.d25a02cf.js"></script>
+<script src="/zh/assets/js/runtime~main.c157ebee.js"></script>
+<script src="/zh/assets/js/main.20ae8921.js"></script>
+<script src="/zh/assets/js/1.b21fad17.js"></script>
+<script src="/zh/assets/js/2.c74b4887.js"></script>
+<script src="/zh/assets/js/4.a448f392.js"></script>
+<script src="/zh/assets/js/a6aa9e1f.c641128b.js"></script>
+<script src="/zh/assets/js/f7488fe8.ed219fa4.js"></script>
+<script src="/zh/assets/js/bacea567.49cd87f9.js"></script>
+<script src="/zh/assets/js/c119cf3c.b661798c.js"></script>
+<script src="/zh/assets/js/17dc512b.888d5c12.js"></script>
+<script src="/zh/assets/js/c5594f1a.d180ea48.js"></script>
+<script src="/zh/assets/js/fa919c95.75271be3.js"></script>
+<script src="/zh/assets/js/7ecc8185.2402dced.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/zh/events/rss.xml b/zh/events/rss.xml
new file mode 100644
index 0000000..0112269
--- /dev/null
+++ b/zh/events/rss.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<rss version="2.0">
+    <channel>
+        <title>Apache APISIX™ Blog</title>
+        <link>https://apisix.apache.org/events</link>
+        <description>Apache APISIX™ Blog</description>
+        <lastBuildDate>Fri, 12 Feb 2021 00:00:00 GMT</lastBuildDate>
+        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
+        <generator>https://github.com/jpmonette/feed</generator>
+        <item>
+            <title><![CDATA[Release Apache APISIX Dashboard 2.4]]></title>
+            <link>https://apisix.apache.org/zh/events/2021/02/12/release-apache-apisix-dashboard-2.4</link>
+            <guid>Release Apache APISIX Dashboard 2.4</guid>
+            <pubDate>Fri, 12 Feb 2021 00:00:00 GMT</pubDate>
+            <description><![CDATA[This release mainly improves basic features, bugfix and adds test cases.]]></description>
+        </item>
+        <item>
+            <title><![CDATA[Release Apache APISIX Ingress Controller 0.3.0]]></title>
+            <link>https://apisix.apache.org/zh/events/2021/02/11/release-apache-apisix-ingress-controller-0.3.0</link>
+            <guid>Release Apache APISIX Ingress Controller 0.3.0</guid>
+            <pubDate>Thu, 11 Feb 2021 00:00:00 GMT</pubDate>
+            <description><![CDATA[This release mainly improves the program robustness and adds some features.]]></description>
+        </item>
+        <item>
+            <title><![CDATA[Release Apache APISIX 2.3]]></title>
+            <link>https://apisix.apache.org/zh/events/2021/02/09/release-apache-apisix-2.3</link>
+            <guid>Release Apache APISIX 2.3</guid>
+            <pubDate>Tue, 09 Feb 2021 00:00:00 GMT</pubDate>
+            <description><![CDATA[Change]]></description>
+        </item>
+        <item>
+            <title><![CDATA[Release Apache APISIX Ingress Controller 0.2.0]]></title>
+            <link>https://apisix.apache.org/zh/events/2021/01/19/release-apache-apisix-ingress-controller-0.2.0</link>
+            <guid>Release Apache APISIX Ingress Controller 0.2.0</guid>
+            <pubDate>Tue, 19 Jan 2021 00:00:00 GMT</pubDate>
+            <description><![CDATA[This release mainly improve basic features, bugfix and adds test cases.]]></description>
+        </item>
+        <item>
+            <title><![CDATA[Release Apache APISIX Ingress Controller 0.1.0]]></title>
+            <link>https://apisix.apache.org/zh/events/2020/12/23/release-apache-apisix-ingress-controller-0.1.0</link>
+            <guid>Release Apache APISIX Ingress Controller 0.1.0</guid>
+            <pubDate>Wed, 23 Dec 2020 00:00:00 GMT</pubDate>
+            <description><![CDATA[This release mainly improve basic features, bugfix and adds test cases.]]></description>
+        </item>
+    </channel>
+</rss>
\ No newline at end of file
diff --git a/zh/help/index.html b/zh/help/index.html
new file mode 100644
index 0000000..54e3d58
--- /dev/null
+++ b/zh/help/index.html
@@ -0,0 +1,32 @@
+<!doctype html>
+<html lang="zh">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
+<link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/zh/opensearch.xml">
+<link rel="alternate" type="application/rss+xml" href="/zh/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Apache APISIX™"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:url" content="https://apisix.apache.org//zh/help"><meta data-react-helmet="true" name="docsearch:language" content="zh [...]
+<link rel="preload" href="/zh/assets/js/styles.d25a02cf.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.c157ebee.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.20ae8921.js" as="script">
+<link rel="preload" href="/zh/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/zh/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/zh/assets/js/3.e5911a24.js" as="script">
+<link rel="preload" href="/zh/assets/js/7e37206e.7992680e.js" as="script">
+</head>
+<body>
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+<script src="/zh/assets/js/styles.d25a02cf.js"></script>
+<script src="/zh/assets/js/runtime~main.c157ebee.js"></script>
+<script src="/zh/assets/js/main.20ae8921.js"></script>
+<script src="/zh/assets/js/1.b21fad17.js"></script>
+<script src="/zh/assets/js/2.c74b4887.js"></script>
+<script src="/zh/assets/js/3.e5911a24.js"></script>
+<script src="/zh/assets/js/7e37206e.7992680e.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/zh/img/asf_logo_wide_small.png b/zh/img/asf_logo_wide_small.png
new file mode 100644
index 0000000..865de17
Binary files /dev/null and b/zh/img/asf_logo_wide_small.png differ
diff --git a/zh/img/community.png b/zh/img/community.png
new file mode 100644
index 0000000..8eacc14
Binary files /dev/null and b/zh/img/community.png differ
diff --git a/zh/img/documents.png b/zh/img/documents.png
new file mode 100644
index 0000000..7e546fe
Binary files /dev/null and b/zh/img/documents.png differ
diff --git a/zh/img/favicon.png b/zh/img/favicon.png
new file mode 100644
index 0000000..381ab08
Binary files /dev/null and b/zh/img/favicon.png differ
diff --git a/zh/img/logo.png b/zh/img/logo.png
new file mode 100644
index 0000000..d83b385
Binary files /dev/null and b/zh/img/logo.png differ
diff --git a/zh/img/release_flow.png b/zh/img/release_flow.png
new file mode 100644
index 0000000..ee3d594
Binary files /dev/null and b/zh/img/release_flow.png differ
diff --git a/zh/index.html b/zh/index.html
new file mode 100644
index 0000000..a00433f
--- /dev/null
+++ b/zh/index.html
@@ -0,0 +1,32 @@
+<!doctype html>
+<html lang="zh">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
+<link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/zh/opensearch.xml">
+<link rel="alternate" type="application/rss+xml" href="/zh/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Apache APISIX™"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:url" content="https://apisix.apache.org//zh/"><meta data-react-helmet="true" name="docsearch:language" content="zh"><m [...]
+<link rel="preload" href="/zh/assets/js/styles.d25a02cf.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.c157ebee.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.20ae8921.js" as="script">
+<link rel="preload" href="/zh/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/zh/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/zh/assets/js/59.654079dd.js" as="script">
+<link rel="preload" href="/zh/assets/js/c4f5d8e4.a4d61c1b.js" as="script">
+</head>
+<body>
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div id="docusaurus-base-url-issue-banner-container"></div><nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title> [...]
+<script src="/zh/assets/js/styles.d25a02cf.js"></script>
+<script src="/zh/assets/js/runtime~main.c157ebee.js"></script>
+<script src="/zh/assets/js/main.20ae8921.js"></script>
+<script src="/zh/assets/js/1.b21fad17.js"></script>
+<script src="/zh/assets/js/2.c74b4887.js"></script>
+<script src="/zh/assets/js/59.654079dd.js"></script>
+<script src="/zh/assets/js/c4f5d8e4.a4d61c1b.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/zh/opensearch.xml b/zh/opensearch.xml
new file mode 100644
index 0000000..1ea593e
--- /dev/null
+++ b/zh/opensearch.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/"
+                       xmlns:moz="http://www.mozilla.org/2006/browser/search/">
+  <ShortName>Apache APISIX™</ShortName>
+  <Description>Search Apache APISIX™</Description>
+  <InputEncoding>UTF-8</InputEncoding>
+  <Image width="16" height="16" type="image/x-icon">https://apisix.apache.org/img/favicon.png</Image>
+  <Url type="text/html" method="get" template="https://apisix.apache.org//search?q={searchTerms}"/>
+  <Url type="application/opensearchdescription+xml" rel="self" template="https://apisix.apache.org//opensearch.xml" />
+  <moz:SearchForm>https://apisix.apache.org/</moz:SearchForm>
+</OpenSearchDescription>
\ No newline at end of file
diff --git a/zh/robots.txt b/zh/robots.txt
new file mode 100644
index 0000000..6f27bb6
--- /dev/null
+++ b/zh/robots.txt
@@ -0,0 +1,2 @@
+User-agent: *
+Disallow:
\ No newline at end of file
diff --git a/zh/search/index.html b/zh/search/index.html
new file mode 100644
index 0000000..23f55f6
--- /dev/null
+++ b/zh/search/index.html
@@ -0,0 +1,30 @@
+<!doctype html>
+<html lang="zh">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
+<link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/zh/opensearch.xml">
+<link rel="alternate" type="application/rss+xml" href="/zh/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Search the documentation | Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Apache APISIX™"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:url" content="https://apisix.apache.org//zh/search"><meta data-react-helmet="true" name="do [...]
+<link rel="preload" href="/zh/assets/js/styles.d25a02cf.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.c157ebee.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.20ae8921.js" as="script">
+<link rel="preload" href="/zh/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/zh/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/zh/assets/js/54.b7cce01d.js" as="script">
+</head>
+<body>
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+<script src="/zh/assets/js/styles.d25a02cf.js"></script>
+<script src="/zh/assets/js/runtime~main.c157ebee.js"></script>
+<script src="/zh/assets/js/main.20ae8921.js"></script>
+<script src="/zh/assets/js/1.b21fad17.js"></script>
+<script src="/zh/assets/js/2.c74b4887.js"></script>
+<script src="/zh/assets/js/54.b7cce01d.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/zh/sitemap.xml b/zh/sitemap.xml
new file mode 100644
index 0000000..42e5108
--- /dev/null
+++ b/zh/sitemap.xml
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:mobile="http://www.google.com/schemas/sitemap-mobile/1.0" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://apisix.apache.org/zh/</loc><changefreq>weekly</changefreq><priority>0.5</priority></u [...]
\ No newline at end of file
diff --git a/zh/team/index.html b/zh/team/index.html
new file mode 100644
index 0000000..dfdbbf2
--- /dev/null
+++ b/zh/team/index.html
@@ -0,0 +1,32 @@
+<!doctype html>
+<html lang="zh">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="generator" content="Docusaurus v2.0.0-alpha.fd17476c3">
+<link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX™" href="/zh/opensearch.xml">
+<link rel="alternate" type="application/rss+xml" href="/zh/events/rss.xml" title="Apache APISIX™ Blog RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh/events/atom.xml" title="Apache APISIX™ Blog Atom Feed">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Apache APISIX™</title><meta data-react-helmet="true" property="og:title" content="Apache APISIX™"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:url" content="https://apisix.apache.org//zh/team"><meta data-react-helmet="true" name="docsearch:language" content="zh [...]
+<link rel="preload" href="/zh/assets/js/styles.d25a02cf.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.c157ebee.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.20ae8921.js" as="script">
+<link rel="preload" href="/zh/assets/js/1.b21fad17.js" as="script">
+<link rel="preload" href="/zh/assets/js/2.c74b4887.js" as="script">
+<link rel="preload" href="/zh/assets/js/3.e5911a24.js" as="script">
+<link rel="preload" href="/zh/assets/js/859cc09f.feab14f8.js" as="script">
+</head>
+<body>
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_1oUP">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-m [...]
+<script src="/zh/assets/js/styles.d25a02cf.js"></script>
+<script src="/zh/assets/js/runtime~main.c157ebee.js"></script>
+<script src="/zh/assets/js/main.20ae8921.js"></script>
+<script src="/zh/assets/js/1.b21fad17.js"></script>
+<script src="/zh/assets/js/2.c74b4887.js"></script>
+<script src="/zh/assets/js/3.e5911a24.js"></script>
+<script src="/zh/assets/js/859cc09f.feab14f8.js"></script>
+</body>
+</html>
\ No newline at end of file