1<!DOCTYPE html> 2<html lang="en"> 3<head> 4 <meta charset="utf-8"> 5 <title>OpenResty - About</title> 6 <meta name="description" content="Learn about OpenResty®: the open-source web platform created by Yichun Zhang (agentzh), its history, maintainers, sponsors, and tight integration of its Nginx modules."> 7 <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=0.5, maximum-scale=2.0, user-scalable=yes"> 8 <link href='https://openresty.org/css/fonts.css' rel='stylesheet' type='text/css'> 9 <!-- 10 If you ever wanted to use LESS instead of CSS... 11 <link rel="stylesheet" type="text/less" href="/css/main.less"> 12
12<script src="/js/less.js"></script>
12 13 --> 14 <link rel="stylesheet" type="text/css" href="/css/main.css"> 15 <link rel="stylesheet" type="text/css" href="/css/github.css">
16<script type="application/ld+json">{"applicationCategory":"DeveloperApplication","operatingSystem":"Linux","codeRepository":"https:\/\/github.com\/openresty\/openresty","@context":"https:\/\/schema.org","license":"https:\/\/opensource.org\/licenses\/BSD-2-Clause","@type":["SoftwareApplication","SoftwareSourceCode"],"sameAs":["https:\/\/github.com\/openresty\/","https:\/\/forum.openresty.us\/"],"@id":"https:\/\/openresty.org\/#software","maintainer":{"@type":"Organization","url":"https:\/\/openresty.com","name":"OpenResty Inc.","@id":"https:\/\/openresty.com\/#org"},"description":"OpenResty is an open-source web platform that integrates an enhanced Nginx core with LuaJIT, maintained by OpenResty Inc.","url":"https:\/\/openresty.org\/","name":"OpenResty"}</script>
vendor: 1 bytes, line 16
16
17<script type="application/ld+json">{"@type":"WebPage","name":"About","description":"Learn about OpenResty®: the open-source web platform created by Yichun Zhang (agentzh), its history, maintainers, sponsors, and tight integration of its Nginx modules.","@context":"https:\/\/schema.org","url":"https:\/\/openresty.org\/en\/about.html","inLanguage":"en"}</script>
vendor: 1 bytes, line 17
17
18<script type="application/ld+json">{"@type":"BreadcrumbList","@context":"https:\/\/schema.org","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/openresty.org\/en\/"},{"@type":"ListItem","position":2,"name":"About","item":"https:\/\/openresty.org\/en\/about.html"}]}</script>
18 19<link rel="alternate" hreflang="en" href="https://openresty.org/en/about.html"> 20<link rel="alternate" hreflang="zh" href="https://openresty.org/cn/about.html"> 21<link rel="alternate" hreflang="x-default" href="https://openresty.org/en/about.html"> 22</head> 23<body> 24 25<header role="header"> 26 <p class="site-name left"> 27 <a href="."> 28 <img src="/images/logo.webp" width="64" alt="OpenResty logo" loading="eager"> 29 </a> 30 </p> 31 32 <p class="site-name left"> 33 <a href=".">OpenResty<span class="trade">®</span></a> 34 <small>Scalable Web Platform by Extending NGINX with Lua</small> 35 </p><!-- / site-name --> 36 <p class="right link"> 37 <a href="https://github.com/openresty/" title="Contribute on GitHub"> 38 <img src="/images/ico-github.webp" alt="GitHub" loading="eager"> 39 <span class="link-title">Contribute on GitHub</span> 40 </a> 41 <a href="https://forum.openresty.us/" title="Official Forum"> 42 <img class="dark-img" src="/images/flarum.webp" alt="OpenResty Forum" loading="eager"> 43 <span class="link-title">Official Forum</span> 44 </a> 45 <a role="button" href="https://openresty.com/en/xray/request-demo/?src=org_top" class="enterprise-button" type="button" title="Try OpenResty XRay"> 46 <img src="/images/rocket.svg" alt="Try OpenResty XRay" loading="eager"> 47 <span class="link-title">Try OpenResty XRay</span> 48 </a> 49 </p><!-- / links --> 50</header> 51 52 53<div class="xray-modal hide"> 54 <div class="xray-modal-content"> 55 <div class="header"> 56 <div class="header-icon"> 57 <div class="btn-violet"> 58 <img src="/images/search.svg" alt="Search" loading="lazy"/> 59 </div> 60 <div class="product-name">OpenResty XRay</div> 61 </div> 62 <div class="header-title"> 63 <p>Advanced observability built for OpenResty and more</p> 64 <p class="small xray-live-demo-link"> 65 <span class="icon-pc-display-horizontal"></span> 66 67 <a href="https://demo.xray.openresty.com/targets/" target="_blank" rel="noopener noreferrer">OpenResty XRay Live Demo â</a> 68 </p> 69 </div> 70 <div class="btn-close"> 71 <span>×</span> 72 </div> 73 </div> 74 <div class="content"> 75 <div class="seperator"> 76 <hr/> 77 <div class="seperator-text">limited time offer</div> 78 <hr/> 79 </div> 80 <div class="form-title"> 81 <span>Request </span> 82 <span class="text-violet">TRIAL</span> 83 <span> today and receive a diagnostic </span> 84 <span class="text-violet">REPORT</span> 85 </div> 86 <form class="form-xray-request-demo"> 87 <div class="form-field-item"> 88 <input class="input-name" name="name" type="text" placeholder='Enter your full name'> 89 </div> 90 <div class="form-field-item"> 91 <input name="email" type="email" placeholder='Enter your business email'> 92 </div> 93 <button class="form-next-button" type="submit">Submit</button> 94 <div class="btn-learn-more">Learn more</div> 95 </form> 96 </div> 97 </div> 98</div> 99 100 101 <div id="wrapper"> 102 <div class="sidebar sleft"> 103 <nav id="nav"> 104<ul> 105<li><big><strong><a href="https://blog.openresty.com/en/?src=org_side" title="Blog">Blog</a></strong></big></li> 106<li><big><strong><a href="download.html" title="Download">Download</a></strong></big></li> 107<li><a href="installation.html" title="Installation">Installation</a></li> 108<li><a href="https://www.youtube.com/channel/UCXVmwF-UCScv2ftsGoMqxhw/" title="YouTube Channel">YouTube Channel</a></li> 109<li><a href="videos.html" title="Video Tutorials">Video Tutorials</a></li> 110<li><a href="commercial.html" title="Enterprise Solutions">Enterprise Solutions</a></li> 111<li><a href="getting-started.html" title="Getting Started">Getting Started</a></li> 112<li><a href="upgrading.html" title="Upgrading">Upgrading</a></li> 113<li><a href="changes.html" title="Changes">Changes</a></li> 114<li><a href="events.html" title="Events">Events</a></li> 115<li><a href="components.html" title="Components">Components</a></li> 116<li><a href="community.html" title="Community">Community</a></li> 117<li><a href="benchmark.html" title="Benchmark">Benchmark</a></li> 118<li><a href="contact-us.html" title="Contact us">Contact us</a></li> 119<li><a href="debugging.html" title="Debugging">Debugging</a></li> 120<li><a href="donate-online.html" title="Donate Online">Donate Online</a></li> 121<li><a href="donors.html" title="Donors">Donors</a></li> 122<li><a href="ebooks.html" title="eBooks">eBooks</a></li> 123<li><a href="faq.html" title="FAQ">FAQ</a></li> 124<li><a href="getting-involved.html" title="Getting Involved">Getting Involved</a></li> 125<li><a href="presentations.html" title="Presentations">Presentations</a></li> 126<li><a href="profiling.html" title="Profiling">Profiling</a></li> 127<li><a href="quality-assurance.html" title="Quality Assurance">Quality Assurance</a></li> 128<li><a href="resources.html" title="Resources">Resources</a></li> 129<li><a href="samples.html" title="Samples">Samples</a></li> 130<li><a href="https://openresty.org/survey/" title="User Survey">User Survey</a></li> 131<li><a href="about.html" title="About">About</a></li> 132<li><a href="/cn/" title="䏿ç«">䏿ç«</a></li> 133<li><a href="https://openresty.com/" title="OpenResty.com">OpenResty.com</a></li> 134</ul> 135 136 137 </nav>
137<!-- / nav --> 138 139<ul class="buttons"> 140 <!-- <li><a href="#" class="btn rss">RSS Feed</a></li> --> 141 <li> 142 <!-- <a href="#" class="btn paypal">Donate with PayPal</a> --> 143 <form name="_xclick" action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_blank"> 144 <input type="hidden" name="cmd" value="_xclick"> 145 <input type="hidden" name="business" value="[email protected]"> 146 <input type="hidden" name="item_name" value="OpenResty Donation (in USD)"> 147 <input type="hidden" name="currency_code" value="USD"> 148 <input type="hidden" name="amount" value=""> 149 <input type="image" src="/images/donate_paypal.gif" name="submit" alt="Donate with PayPal"> 150 </form> 151 </li> 152</ul> 153 154 155 </div><!-- / sidebar left --> 156 157 <section id="main"> 158 159<div class="news"> 160 <div class="news-item"><a href="ann-1031001001.html"><img class="news-img" src="../images/logo.webp" alt="OpenResty" loading="lazy"/></a> 161 <div class="news-description"><strong class="news-hint">New! </strong><a href="ann-1031001001.html">OpenResty 1.31.1.1</a><span> is now released!</span></div> 162 </div> 163 <div class="news-item"><a href="ann-1029002005.html"><img class="news-img" src="../images/logo.webp" alt="OpenResty" loading="lazy"/></a> 164 <div class="news-description"><strong class="news-hint">New! </strong><a href="ann-1029002005.html">OpenResty 1.29.2.5</a><span> is now released!</span></div> 165 </div> 166 <div class="news-item"><a href="https://blog.openresty.com.cn/en/edge-private-cdn-live-streaming/?src=org_news" target="_blank"><img class="news-img" src="../images/header-images/edge-private-cdn-live-streaming.webp" alt="OpenResty Edge private CDN live streaming" loading="lazy"/></a> 167 <div class="news-description"><strong class="news-hint">New!</strong><span> New blog post </span><a href="https://blog.openresty.com.cn/en/edge-private-cdn-live-streaming/?src=org_news" target="_blank">CDN for Live Streaming: Surviving Peak Events Without Peak-Event Bills</a><span> is published.</span></div> 168 </div> 169 <div class="news-item"><a href="https://blog.openresty.com.cn/en/xray-ann-26.7.15/?src=org_news" target="_blank"><img class="news-img" src="../images/header-images/xray-logo.webp" alt="OpenResty XRay logo" loading="lazy"/></a> 170 <div class="news-description"><strong class="news-hint">New!</strong><span> New blog post </span><a href="https://blog.openresty.com.cn/en/xray-ann-26.7.15/?src=org_news" target="_blank">OpenResty XRay Version 26.7.15. Now Available</a><span> is published.</span></div> 171 </div> 172 <div class="news-item"><a href="https://blog.openresty.com.cn/en/openresty-xray-ai-assistant/?src=org_news" target="_blank"><img class="news-img" src="../images/header-images/openresty-xray-ai-assistant.webp" alt="OpenResty XRay AI assistant" loading="lazy"/></a> 173 <div class="news-description"><strong class="news-hint">New!</strong><span> New blog post </span><a href="https://blog.openresty.com.cn/en/openresty-xray-ai-assistant/?src=org_news" target="_blank">OpenResty XRay AI Assistant: Making Every Piece of Analysis Data Speak</a><span> is published.</span></div> 174 </div> 175 <div class="news-item"><a href="https://blog.openresty.com.cn/en/edge-hls-live-streaming/?src=org_news" target="_blank"><img class="news-img" src="../images/header-images/edge-hls-live-streaming.webp" alt="OpenResty Edge HLS live streaming" loading="lazy"/></a> 176 <div class="news-description"><strong class="news-hint">New!</strong><span> New blog post </span><a href="https://blog.openresty.com.cn/en/edge-hls-live-streaming/?src=org_news" target="_blank">Building a Self-Hosted Live Streaming CDN for HLS with OpenResty Edge</a><span> is published.</span></div> 177 </div> 178 <div class="news-item"><a href="https://blog.openresty.com.cn/en/private-libs/?src=org_news" target="_blank"><img class="news-img" src="../images/header-images/private-libs.webp" alt="OpenResty private libraries" loading="lazy"/></a> 179 <div class="news-description"><strong class="news-hint">New!</strong><span> New blog post </span><a href="https://blog.openresty.com.cn/en/private-libs/?src=org_news" target="_blank">OpenResty Private Libraries: High-Performance Lua & Nginx Modules</a><span> is published.</span></div> 180 </div> 181 <div class="news-item"><a href="https://blog.openresty.com.cn/en/edge-inner-traffic/?src=org_news" target="_blank"><img class="news-img" src="../images/header-images/edge-inner-traffic.webp" alt="OpenResty Edge internal traffic" loading="lazy"/></a> 182 <div class="news-description"><strong class="news-hint">New!</strong><span> New blog post </span><a href="https://blog.openresty.com.cn/en/edge-inner-traffic/?src=org_news" target="_blank">Taming Internal Traffic Chaos with OpenResty Edge</a><span> is published.</span></div> 183 </div> 184</div> 185 186<div class="item"> 187 <header> 188 <h2>About</h2> 189 <small> 190 191 liwang2019 192 , 193 20 Aug 2026 (created 21 Jun 2011)</small> 194 <div class="options"> 195 <!-- 196 <a href="#" class="trigger">Show Options</a> 197 <ul class="first-level"> 198 <li><a href="#">close</a></li> 199 <li><a href="#">close others</a></li> 200 <li><a href="#">view</a></li> 201 <li><a href="#">fields</a></li> 202 <li><a href="#">syncing</a></li> 203 <li><a href="#">permalink</a></li> 204 <li><a href="#">references</a></li> 205 <li> 206 <a href="#">jump</a> 207 <ul class="second-level"> 208 <li><a href="#">Benchmark</a></li> 209 <li><a href="#">Presentations</a></li> 210 <li><a href="#">eBooks</a></li> 211 </ul> 212 </li> 213 </ul> 214 --> 215 </div><!-- / options --> 216 </header> 217 <div class="body"> 218<p>This open source web platform is mainly maintained by Yichun Zhang (<a href="https://agentzh.org" title="agentzh">agentzh</a>). 219It was originally sponsored by Yahoo! China and <a href="https://www.taobao.c
219om" title="Taobao.com">Taobao.com</a> before the 220year 2011 and it was mainly supported by <a href="https://www.cloudflare.com" title="Cloudflare Inc.">Cloudflare Inc.</a> 221between 2012 ~ 2016. Right now it is mainly supported by OpenResty Software Foundation 222and <a href="https://openresty.com" title="OpenResty Inc">OpenResty Inc</a>.</p> 223<p>Because most of the <a href="nginx.html" title="Nginx">Nginx</a> modules are developed by the bundle 224maintainers, it can be ensured 225that all these modules are played well together.</p> 226<p>The bundled software components are copyrighted by the respective copyright 227holders. Basically only components with BSD style licenses are included. If 228you find exceptions, please let me know.</p> 229<p>This web site is a dynamic web application built completely upon the OpenResty<sup>®</sup> 230platform and the PostgreSQL database. The whole application is 231opensourced on <a href="github.html" title="GitHub">GitHub</a>:</p> 232<p><a href="https://github.com/openresty/openresty.org/" title="https://github.com/openresty/openresty.org/">https://github.com/openresty/openresty.org/</a></p> 233<p>Feel free to fork it or just <a href="contact-us.html" title="contact us">contact us</a> to obtain a git commit 234bit if you want to edit and improve this site.</p> 235 236 237 </div><!-- / body --> 238</div><!-- / item --> 239 240 241<div id="articles"> 242 <h2 class="area-title">More Interesting Topics</h2> 243 <div id="loading-wrapper"> 244 <div class="sk-three-bounce"> 245 <div class="sk-child sk-bounce1"></div> 246 <div class="sk-child sk-bounce2"></div> 247 <div class="sk-child sk-bounce3"></div> 248 </div> 249 </div> 250 <div class="swiper-parent" id="swiper-parent"> 251 <div class="swiper" id="article-carousel"> 252 <div class="swiper-wrapper"> 253 <div class="swiper-slide"><a class="article-item" href="https://blog.openresty.com.cn/en/edge-private-cdn-live-streaming/?src=org" data-modal="data-modal"> 254 <div class="blog-img" data-pic="/header-images/edge-private-cdn-live-streaming.webp"><img class="article-img" src="../images/header-images/edge-private-cdn-live-streaming.webp" alt="OpenResty Edge private CDN live streaming" loading="lazy"/></div> 255 <div class="article-text"> 256 <p class="blog-title">CDN for Live Streaming: Surviving Peak Events Without Peak-Event Bills</p> 257 </div></a></div> 258 <div class="swiper-slide"><a class="article-item" href="https://blog.openresty.com.cn/en/xray-ann-26.7.15/?src=org" data-modal="data-modal"> 259 <div class="blog-img" data-pic="/header-images/xray-logo.webp"><img class="article-img" src="../images/header-images/xray-logo.webp" alt="OpenResty XRay logo" loading="lazy"/></div> 260 <div class="article-text"> 261 <p class="blog-title">OpenResty XRay Version 26.7.15. Now Available</p> 262 </div></a></div> 263 <div class="swiper-slide"><a class="article-item" href="https://blog.openresty.com.cn/en/openresty-xray-ai-assistant/?src=org" data-modal="data-modal"> 264 <div class="blog-img" data-pic="/header-images/openresty-xray-ai-assistant.webp"><img class="article-img" src="../images/header-images/openresty-xray-ai-assistant.webp" alt="OpenResty XRay AI assistant" loading="lazy"/></div> 265 <div class="article-text"> 266 <p class="blog-title">OpenResty XRay AI Assistant: Making Every Piece of Analysis Data Speak</p> 267 </div></a></div> 268 <div class="swiper-slide"><a class="article-item" href="https://blog.openresty.com.cn/en/edge-hls-live-streaming/?src=org" data-modal="data-modal"> 269 <div class="blog-img" data-pic="/header-images/edge-hls-live-streaming.webp"><img class="article-img" src="../images/header-images/edge-hls-live-streaming.webp" alt="OpenResty Edge HLS live streaming" loading="lazy"/></div> 270 <div class="article-text"> 271 <p class="blog-title">Building a Self-Hosted Live Streaming CDN for HLS with OpenResty Edge</p> 272 </div></a></div> 273 <div class="swiper-slide"><a class="article-item" href="https://blog.openresty.com.cn/en/private-libs/?src=org" data-modal="data-modal"> 274 <div class="blog-img" data-pic="/header-images/private-libs.webp"><img class="article-img" src="../images/header-images/private-libs.webp" alt="OpenResty private libraries" loading="lazy"/></div> 275 <div class="article-text"> 276 <p class="blog-title">OpenResty Private Libraries: High-Performance Lua & Nginx Modules</p> 277 </div></a></div> 278 <div class="swiper-slide"><a class="article-item" href="https://blog.openresty.com.cn/en/edge-inner-traffic/?src=org" data-modal="data-modal"> 279 <div class="blog-img" data-pic="/header-images/edge-inner-traffic.webp"><img class="article-img" src="../images/header-images/edge-inner-traffic.webp" alt="OpenResty Edge internal traffic" loading="lazy"/></div> 280 <div class="article-text"> 281 <p class="blog-title">Taming Internal Traffic Chaos with OpenResty Edge</p> 282 </div></a></div> 283 <div class="swiper-slide"><a class="article-item" href="https://blog.openresty.com.cn/en/xray-ann-26.5.11/?src=org" data-modal="data-modal"> 284 <div class="blog-img" data-pic="/header-images/xray-logo.webp"><img class="article-img" src="../images/header-images/xray-logo.webp" alt="OpenResty XRay logo" loading="lazy"/></div> 285 <div class="article-text"> 286 <p class="blog-title">OpenResty XRay Version 26.5.11. Now Available</p> 287 </div></a></div> 288 <div class="swiper-slide"><a class="article-item" href="https://blog.openresty.com.cn/en/edge-db-backup/?src=org" data-modal="data-modal"> 289 <div class="blog-img" data-pic="/header-images/edge-db-backup.webp"><img class="article-img" src="../images/header-images/edge-db-backup.webp" alt="OpenResty Edge database backup" loading="lazy"/></div> 290 <div class="article-text"> 291 <p class="blog-title">OpenResty Edge Data Protection: From Scheduled Backups to Automatic Failover</p> 292 </div></a></div> 293 <div class="swiper-slide"><a class="article-item" href="https://blog.openresty.com.cn/en/edge-k8s-what/?src=org" data-modal="data-modal"> 294 <div class="blog-img" data-pic="/header-images/edge-k8s-what.webp"><img class="article-img" src="../images/header-images/edge-k8s-what.webp" alt="OpenResty Edge Kubernetes overview" loading="lazy"/></div> 295 <div class="article-text"> 296 <p class="blog-title">Automating Kubernetes Gateway Node Lifecycle with OpenResty Edge</p> 297 </div></a></div> 298 <div class="swiper-slide"><a class="article-item" href="https://blog.openresty.com.cn/en/what-edge-yaml/?src=org" data-modal="data-modal"> 299 <div class="blog-img" data-pic="/header-images/what-edge-yaml.webp"><img class="article-img" src="../images/header-images/what-edge-yaml.webp" alt="OpenResty Edge YAML overview" loading="lazy"/></div> 300 <div class="article-text"> 301 <p class="blog-title">Managing OpenResty Edge Configuration with YAML and Git: A Practical Guide to `edge2yaml`</p> 302 </div></a></div> 303 <div class="swiper-slide"><a class="article-item" href="https://blog.openresty.com.cn/en/xray-vulnerability-scanning/?src=org" data-modal="data-modal"> 304 <div class="blog-img" data-pic="/header-images/xray-vulnerability-scanning.webp"><img class="article-img" src="../images/header-images/xray-vulnerability-scanning.webp" alt="OpenResty XRay vulnerability scanning" loading="lazy"/></div> 305 <div class="article-text"> 306 <p class="blog-title">Binary Vulnerability Scanning: Catch Backported Patches, Cut False Positives</p> 307 </div></a></div> 308 <div class="swiper-slide"><a class="article-item" href="https://blog.openresty.com.cn/en/xray-ann-26.2.1/?src=org" data-modal="data-modal"> 309 <div class="blog-img" data-pic="/header-images/xray-logo.webp"><img class="article-img" src="../images/header-images/xray-logo.webp" alt="OpenResty XRay logo" loading="lazy"/></div> 310 <div class="article-text"> 311 <p class="blog-title">OpenResty XRay Version 26.2.1. Now Available</p> 312 </div></a></div> 313 <div class="swiper-slide"><a class="article-item" href="https://blog.openresty.com.cn/en/edge-proxy-protocol/?src=org" data-modal="data-modal"> 314 <div class="blog-img" data-pic="/header-images/edge-proxy-protocol.webp"><img class="article-img" src="../images/header-images/edge-proxy-protocol.webp" alt="OpenResty Edge proxy protocol" loading="lazy"/></div> 315 <div class="article-text"> 316 <p class="blog-title">End-to-End Client Real IP Passthrough in OpenResty Edge</p> 317 </div></a></div> 318 <div class="swiper-slide"><a class="article-item" href="https://blog.openresty.com.cn/en/xray-dynamic-advantage/?src=org" data-modal="data-modal"> 319 <div class="blog-img" data-pic="/header-images/xray-dynamic-advantage.webp"><img class="article-img" src="../images/header-images/xray-dynamic-advantage.webp" alt="OpenResty XRay dynamic tracing advantage" loading="lazy"/></div> 320 <div class="article-text"> 321 <p class="blog-title">How OpenResty XRay Enables Full-Stack Dynamic Tracing in Production</p> 322 </div></a></div> 323 <div class="swiper-slide"><a class="article-item" href="https://blog.openresty.com.cn/en/what-is-openresty-edge/?src=org" data-modal="data-modal"> 324 <div class="blog-img" data-pic="/header-images/what-is-openresty-edge.webp"><img class="article-img" src="../images/header-images/what-is-openresty-edge.webp" alt="What is OpenResty Edge" loading="lazy"/></div> 325 <div class="article-text"> 326 <p class="blog-title">OpenResty Edge: Private CDN, Universal Gateway & WAF in One Platform</p> 327 </div></a></div> 328 <div class="swiper-slide"><a class="article-item" href="https://blog.openresty.com.cn/en/what-is-openresty-xray/?src=org" data-modal="data-modal"> 329 <div class="blog-img" data-pic="/header-images/what-is-openresty-xray.webp"><img class="article-img" src="../images/header-images/what-is-openresty-xray.webp" alt="What is OpenResty XRay" loading="lazy"/></div> 330 <div class="article-text"> 331 <p class="blog-title">Introduction to OpenResty XRay</p> 332 </div></a></div> 333 <div class="swiper-slide"><a class="article-item" href="https://blog.openresty.com.cn/en/edge-gslb-what/?src=org" data-modal="data-modal"> 334 <div class="blog-img" data-pic="/header-images/edge-gslb-what.webp"><img class="article-img" src="../images/header-images/edge-gslb-what.webp" alt="OpenResty Edge GSLB overview" loading="lazy"/></div> 335 <div class="article-text"> 336 <p class="blog-title">GSLB Explained: How Global Server Load Balancing Works â and Where DNS-Only Scheduling Fails</p> 337 </div></a></div> 338 <div class="swiper-slide"><a class="article-item" href="https://blog.openresty.com.cn/en/nginx-prod-mem-leak/?src=org" data-modal="data-modal"> 339 <div class="blog-img" data-pic="/header-images/nginx-prod-mem-leak.webp"><img class="article-img" src="../images/header-images/nginx-prod-mem-leak.webp" alt="Nginx production memory leak" loading="lazy"/></div> 340 <div class="article-text"> 341 <p class="blog-title">Hunting Down a Silent Memory Leak in OpenResty Without a Reboot</p> 342 </div></a></div> 343 <div class="swiper-slide"><a class="article-item" href="https://blog.openresty.com.cn/en/xray-keepalive/?src=org" data-modal="data-modal"> 344 <div class="blog-img" data-pic="/header-images/xray-keepalive.webp"><img class="article-img" src="../images/header-images/xray-keepalive.webp" alt="OpenResty XRay keepalive" loading="lazy"/></div> 345 <div class="article-text"> 346 <p class="blog-title">Anatomy of a 15x Performance Drop: A 90k to 6k QPS Root Cause Analysis with OpenResty XRay</p> 347 </div></a></div> 348 <div class="swiper-slide"><a class="article-item" href="https://blog.openresty.com.cn/en/why-edge-waf/?src=org" data-modal="data-modal"> 349 <div class="blog-img" data-pic="/header-images/why-edge-waf.webp"><img class="article-img" src="../images/header-images/why-edge-waf.webp" alt="Why choose OpenResty Edge WAF" loading="lazy"/></div> 350 <div class="article-text"> 351 <p class="blog-title">WAF Benchmark: OpenResty Edge 3.7â10x Faster than ModSecurity (208 Rules)</p> 352 </div></a></div> 353 </div> 354 <div class="swiper-pagination"></div> 355 </div> 356 <div class="swiper-button-next"></div> 357 <div class="swiper-button-prev"></div> 358 </div> 359</div> 360<dialog class="blog-modal" id="blog-modal"> 361 <button class="blog-modal-close" type="button" aria-label="Close">×</button> 362 <iframe class="blog-iframe" id="blog-iframe" title="OpenResty Blog article"></iframe> 363</dialog> 364<link rel="stylesheet" href="/css/swiper-bundle.min.css"/>
365<script src="/js/swiper-bundle.min.js"></script>
vendor: 1 bytes, line 365
365
366<script> 367 window.onload = function () { 368 setMaxWidth(); 369 370 document.getElementById('swiper-parent').style.display = 'block'; 371 document.getElementById('loading-wrapper').style.display = 'none'; 372 373 const swiper = new Swiper('#article-carousel', { 374 navigation: { 375 nextEl: '.swiper-button-next', 376 prevEl: '.swiper-button-prev', 377 }, 378 pagination: { 379 el: '.swiper-pagination', 380 clickable: true, 381 }, 382 spaceBetween: 32, 383 breakpoints: { 384 320: { 385 slidesPerView: 1, 386 slidesPerGroup: 1, 387 }, 388 1000: { 389 slidesPerView: 2, 390 slidesPerGroup: 2, 391 }, 392 1300: { 393 slidesPerView: 3, 394 slidesPerGroup: 3, 395 }, 396 1600: { 397 slidesPerView: 4, 398 slidesPerGroup: 4, 399 }, 400 1800: { 401 slidesPerView: 5, 402 slidesPerGroup: 5, 403 }, 404 2000: { 405 slidesPerView: 6, 406 slidesPerGroup: 6, 407 }, 408 2200: { 409 slidesPerView: 7, 410 slidesPerGroup: 7, 411 }, 412 } 413 }); 414 } 415 416 window.addEventListener('resize', function() { 417 setMaxWidth(); 418 }); 419 420 function setMaxWidth() { 421 const width = document.body.clientWidth > 990 ? document.body.clientWidth - 600 : document.body.clientWidth - 40; 422 document.getElementById('articles').style.setProperty('max-width', width + 'px', 'important'); 423 } 424 425</script>
425 426<style> 427 #article-carousel { 428 width: 100%; 429 } 430 431 #article-carousel .article-item { 432 text-align: center; 433 outline: none; 434 color: #a1a1a1; 435 vertical-align: top; 436 } 437 438 #article-carousel .article-item .article-img { 439 width: 100%; 440 height: 130px; 441 } 442 443 #article-carousel .article-item .article_text { 444 margin-top: 8px; 445 } 446 447 .swiper-pagination-bullet { 448 width: 10px; 449 height: 10px; 450 } 451 452 .swiper-pagination-bullet-active { 453 background-color: #497149; 454 } 455 456 .swiper-parent { 457 display: none; 458 position: relative; 459 padding-left: 70px; 460 padding-right: 70px; 461 margin: 0 auto; 462 } 463 464 .swiper-button-next:after, 465 .swiper-button-prev:after { 466 font-size: 32px; 467 } 468 469 .swiper-button-next:focus, 470 .swiper-button-prev:focus { 471 outline: none; 472 } 473 474 .swiper-wrapper { 475 min-height: 290px; 476 } 477 478 .blog-title { 479 min-height: 50px; 480 } 481 482 @media (min-width: 575px) { 483 .swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet { 484 margin: 0 10px; 485 } 486 } 487 488 @media (max-width: 575px) { 489 .swiper-wrapper { 490 min-height: 240px; 491 } 492 } 493 494 #article-carousel .article-item { 495 height: 290px; 496 } 497 498 .img-container { 499 padding: 0 5px; 500 border: 1px solid #578C57; 501 } 502 503 #articles { 504 margin: 0 auto; 505 } 506 507 #articles h2 { 508 color: black; 509 text-align: center; 510 margin-bottom: 36px; 511 font-weight: bold; 512 font-size: 120%; 513 } 514 515 .article-text { 516 color: #4d8d89; 517 margin-top: 8px; 518 } 519 520 .blog-img { 521 object-fit: cover; 522 } 523 524 .blog-img[data-pic*=hiring] { 525 border: 1px solid #497149; 526 } 527 528 .blog-img[data-pic*=logo], 529 .blog-img[data-pic*=report] { 530 object-fit: contain; 531 padding: 0 10px; 532 border: 1px solid #497149; 533 } 534 535 .article-img[src*=logo], 536 .article-img[src*=report] { 537 object-fit: contain; 538 } 539 540 #loading-wrapper { 541 display: flex; 542 flex-direction: column; 543 justify-content: center; 544 align-items: center; 545 min-height: 260px; 546 } 547 548 .sk-three-bounce { 549 margin: 40px auto; 550 width: 80px; 551 text-align: center; 552 transform: scale(.75); 553 } 554 555 .sk-three-bounce .sk-child { 556 width: 20px; 557 height: 20px; 558 background-color: #333; 559 border-radius: 100%; 560 display: inline-block; 561 animation: sk-three-bounce 1.4s ease-in-out 0s infinite both; 562 } 563 564 .sk-three-bounce .sk-bounce1 { 565 animation-delay: -0.32s; 566 } 567 568 .sk-three-bounce .sk-bounce2 { 569 animation-delay: -0.16s; 570 } 571 572 .swiper-button-prev, 573 .swiper-button-next { 574 color: #497149; 575 } 576 577 .article-text:hover { 578 color: #003300; 579 } 580 581 .swiper-button-next, .swiper-button-prev { 582 top: 30%; 583 } 584 585 @keyframes sk-three-bounce { 586 0%, 80%, 100% { 587 transform: scale(0); 588 } 589 40% { 590 transform: scale(1) 591 } 592 } 593</style> 594 </section><!-- / main --> 595 596<div class="sidebar sright"> 597 <div class="options"> 598 <!-- 599 <ul class="first"> 600 <li><a href="#" class="close-all">close all</a></li> 601 <li><a href="#" class="permaview">permaview</a></li> 602 <li><a href="#" class="more-options">options</a></li> 603 </ul> --><!-- / first --> 604 </div><!-- options --> 605 606 <div class="tabs"> 607 <ul class="navigation"> 608 <!-- 609 <li><a href="#" class="current">Timeline</a></li> 610 <li><a href="#">All</a></li> 611 <li><a href="#">Tags</a></li> 612 <li><a href="#">More</a></li> 613 --> 614 <li><span>Timeline</span></li> 615 </ul><!-- / navigation --> 616 <div class="panes"> 617 <div class="pane" id="timeline"> 618 <ul> 619 <li> 620 <h3>20 Aug 2026</h3> 621 <ul> 622 <li><a href="changelog-1025003.html">ChangeLog for 1.25.3.x</a></li> 623 <li><a href="changelog-1002007.html">ChangeLog 1.2.7</a></li> 624 <li><a href="changelog-1000010.html">ChangeLog 1.0.10</a></li> 625 <li><a href="ann-1015008003.html">OpenResty 1.15.8.3 Released</a></li> 626 <li><a href="ann-test-nginx-028.html">Test::Nginx 0.28 Released</a></li> 627 <li><a href="changelog-1019003.html">ChangeLog for 1.19.3.x</a></li> 628 <li><a href="changelog-1005011.html">ChangeLog 1.5.11</a></li> 629 <li><a href="ann-test-nginx-029.html">Test::Nginx 0.29 Released</a></li> 630 <li><a href="ann-test-nginx-030.html">Test::Nginx 0.30 Released</a></li> 631 <li><a href="ann-1029002003.html">OpenResty 1.29.2.3 Released</a></li> 632 <li><a href="changelog-1015008.html">ChangeLog for 1.15.8.x</a></li> 633 <li><a href="lua-cjson-library.html">Lua Cjson Library</a></li> 634 <li><a href="changelog-1031001.html">ChangeLog for 1.31.1.x</a></li> 635 <li><a href="ann-1021004002.html">OpenResty 1.21.4.2 Released</a></li> 636 <li><a href="about.html">About</a></li> 637 <li><a href="ann-1021004004.html">OpenResty 1.21.4.4 Released</a></li> 638 <li><a href="ann-1019009002.html">OpenResty 1.19.9.2 Released</a></li> 639 </ul> 640 </li> 641 </ul> 642 </div><!-- / pane --> 643 </div><!-- / panes --> 644 </div><!-- / tabs --> 645</div><!-- / sidebar right --> 646 647 </div><!-- / wrapper --> 648 649<div class="content-footer"> 650<hr class="footer-sep"/> 651<div class="footer"> 652 <p>OpenResty<sup>®</sup> is a registered trademark owned by <a href="https://openresty.com/">OpenResty Inc</a>.</p> 653 <p>Copyright © 2017, 2018, 2019, 2020, 2021, 2022 by Yichun Zhang (agentzh)</p> 654 <p>100% Powered by OpenResty and PostgreSQL 655 (<a href="https://github.com/openresty/openresty.org/"> 656 view the source code of this site</a>)</p> 657 <br/> 658 659</div> 660</div> 661
662<script src="/js/jquery.min.js"></script>
vendor: 1 bytes, line 662
662
663<script src="/js/highlight.min.js"></script>
vendor: 1 bytes, line 663
663
664<script src="/js/highlight-nginx.min.js"></script>
vendor: 1 bytes, line 664
664
665<script src="/js/highlight-vim.min.js"></script>
vendor: 1 bytes, line 665
665
666<script src="/js/main.js"></script>
666 667<!-- Google analytics -->
668<script type="text/javascript"> 669 670 var _gaq = _gaq || []; 671 _gaq.push(['_setAccount', 'UA-24724965-1']); 672 //_gaq.push(['_setDomainName', 'openresty.org']); 673 _gaq.push(['_trackPageview']); 674 675 var ga_f = function() { 676 var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; 677 ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'https://www') + '.google-analytics.com/ga.js'; 678 var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); 679 }; 680 setTimeout(ga_f, 0); 681 682</script>
682 683 684 685</body> 686</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.