OpenResty Edge 静态文件:网关直接分发,无需回源
在 OpenResty Edge 中,你可以把静态文件直接存放在网关的全局静态文件存储中,再用页面规则从边缘直接返回,无需回源到源站——这样性能更高、也更可靠。你可以按精确 URI 匹配单个文件,按 URI 前缀分发整个目录,还可以用忽略 URI 前缀在匹配前剥掉请求中的前缀。本教程将带你完成文件上传,并逐一配置各种匹配方式。
将静态文件上传到 OpenResty Edge
让我们进入 OpenResty Edge 的 Admin Web 控制台。这是我们控制台的样本部署。每个用户都有自己的本地部署。
首先将静态文件上传到 OpenResty Edge。
转到全局静态文件页面。
创建一个目录。
将其命名为 “test”。
点击创建。
可以看到刚刚创建的目录出现在列表里面。
点击进入该目录。
现在来上传文件。
选择文件 “bird.jpg”。
保存该文件。
创建一个子目录。
将它命名为 “images”。
点击创建。
进入子目录。
上传另一个文件。
选择文件 “cat.jpg”。
保存该文件。
用页面规则分发静态文件
文件已经上传,接下来让我们来使用它们。
我们可以继续使用之前的示例应用,test-edge.com。
进入该应用。
转到页面规则页。
这里有一个在之前的视频教程中创建的页面规则。
现在创建一个新的页面规则,该页面规则将直接返回一个文件。
我们启用一个规则条件来检查 URI 是否为 “/images/bird.jpg”。
操作符选择 “String=”。
输入值 “/images/bird.jpg” 来匹配这个静态文件。
打开 “Content” 开关。
选择一个我们刚刚上传的文件。
展开该目录。
选择图片 “bird.jpg”。
选择在现有的代理页面规则之前插入这个页面规则。
点击创建该规则。
像往常一样,我们需要发布来推送这个新改动。
点击这个按钮。
发布!
新版本现在已经同步到所有的网关服务器上了。
测试静态文件页面规则
然后我们发送一个 URI 为 “images/bird.jpg” 的 HTTP 请求。
可以看到返回了一个鸟的图片,与预期结果相符。
用前缀分发整个目录
在演示了返回文件之后,接下来,我们对目录进行说明。
转到页面规则页。
编辑页面规则。
操作符这里选择 “前缀匹配”。
输入值 “/images”,表示只会匹配这个路径的静态资源。
选择我们刚刚创建的目录。
“忽略 URI 前缀” 允许请求的 URL 与实际资源的 URI 不同,这个功能我们会在后面演示。
保存该规则。
像往常一样,我们需要发布来推送这个新改动。
点击这个按钮。
发布!
新版本现在已经同步到所有的网关服务器上了。
发送一个 URI 为 ”images/cat.jpg“ 的请求。
该请求返回一张存在于子目录 ”images“ 中的猫的图片。
如果我们请求 ”images/bird.jpg“,会发生什么呢?
可以看到该请求返回错误页。这是因为在 ”images“ 子目录中没有 ”bird.jpg“ 这个文件。
忽略 URI 前缀
接下来,我们演示如何忽略 URI 的前缀。
转到页面规则页面。
编辑刚才的页面规则。
仍然使用 ”test“ 目录。
这里选择忽略 ”String“。
输入 ”/images/“。
保存该规则。
像往常一样,我们需要发布来推送这个新改动。
点击这个按钮。
发布!
新版本现在已经同步到所有的网关服务器上了。
发送一个带有 “/images” 前缀的请求。
该请求返回了一张鸟的图片。
然后我们请求子目录 “images” 中的图片。
请求返回了一张猫的图片。
然后我们发送一个带有 “/no” 前缀的不存在的资源的请求。
可以看到返回了错误页。
这样就把静态文件直接存放并分发在网关上了。如果你想缓存的是从源站取回的动态响应,请参见 OpenResty Edge 的缓存规则;如果想把资源作为你自己的私有 CDN 全球分发,请参见 用 OpenResty Edge 构建私有 CDN。
常见问题
OpenResty Edge 分发静态文件需要回源吗?
不需要。文件上传到全局静态文件存储后,页面规则会从网关直接返回它,所以请求无需回源。这样性能更高、也更可靠。
如何分发单个文件与整个目录?
用页面规则加字符串等值操作符匹配单个精确 URI(例如 “/images/bird.jpg”),或者用 “前缀匹配” 操作符按 URI 前缀(例如 “/images”)分发整个已上传的目录。
“忽略 URI 前缀” 有什么用?
它允许请求的 URL 与实际资源的 URI 不同:在查找文件前,先从请求中剥掉一个前缀(例如 “/images/”)。
如何把新的静态文件或页面规则发布上线?
发起一次新的发布,该版本就会同步到你所有的网关服务器上。
关于 OpenResty Edge
OpenResty Edge 是一款专为微服务和分布式流量架构设计的全能型网关软件,由我们自主研发。它集流量管理、私有 CDN 构建、API 网关、安全防护等功能于一体,帮助您轻松构建、管理和保护现代应用程序。OpenResty Edge 拥有业界领先的性能和可扩展性,能够满足高并发、高负载场景下的苛刻需求。它支持调度 K8s 等容器应用流量,并可管理海量域名,轻松满足大型网站和复杂应用的需求。
如果你喜欢这个教程,请订阅这个博客网站和我们的 YouTube 频道 或 B 站频道。谢谢!
关于作者
章亦春是开源 OpenResty® 项目创始人兼 OpenResty Inc. 公司 CEO 和创始人。
章亦春(Github ID: agentzh),生于中国江苏,现定居美国湾区。他是中国早期开源技术和文化的倡导者和领军人物,曾供职于多家国际知名的高科技企业,如 Cloudflare、雅虎、阿里巴巴, 是 “边缘计算“、”动态追踪 “和 “机器编程 “的先驱,拥有超过 22 年的编程及 16 年的开源经验。作为拥有超过 4000 万全球域名用户的开源项目的领导者。他基于其 OpenResty® 开源项目打造的高科技企业 OpenResty Inc. 位于美国硅谷中心。其主打的两个产品 OpenResty XRay(利用动态追踪技术的非侵入式的故障剖析和排除工具)和 OpenResty Edge(最适合微服务和分布式流量的全能型网关软件),广受全球众多上市及大型企业青睐。在 OpenResty 以外,章亦春为多个开源项目贡献了累计超过百万行代码,其中包括,Linux 内核、Nginx、LuaJIT、GDB、SystemTap、LLVM、Perl 等,并编写过 60 多个开源软件库。
关注我们
如果您喜欢本文,欢迎关注我们 OpenResty Inc. 公司的博客网站 。也欢迎扫码关注我们的微信公众号:
翻译
我们提供了英文版原文和中译版(本文)。我们也欢迎读者提供其他语言的翻译版本,只要是全文翻译不带省略,我们都将会考虑采用,非常感谢!


























































































