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. 公司的部落格網站 。也歡迎掃碼關注我們的微信公眾號:
翻譯
我們提供了英文版原文和中譯版(本文)。我們也歡迎讀者提供其他語言的翻譯版本,只要是全文翻譯不帶省略,我們都將會考慮採用,非常感謝!


























































































