Wordpress

我可以使用 CloudFront 為來自同一域但不同伺服器的 WordPress 部落格提供服務嗎?

  • October 17, 2015

我們有一個由 Elastic Beanstalk (AWS) 提供服務的網站,一切執行良好。我們使用內置的負載均衡器通過 HTTPS 等方式為我們的站點提供服務。我們的數據庫通過 RDS 服務分離,而不是在與我們的 Web 伺服器相同的 EC2 實例上。到目前為止,我們對設置感到滿意。

現在,我們想在我們網站的域(不是單獨的或子域,出於 SEO 原因)的“/blog”下建立一個 WordPress 部落格。我們的網站是一個定制的 PHP 應用程序(使用 Laravel 框架),我寧願不要在同一個地方同時託管 WP 應用程序和我們的網站。

我相信我們可以使用 CloudFront(亞馬遜的 CDN)來服務於我們網站的 /blog 部分,並將這些請求路由到不同 EC2 實例上的單獨 WP 安裝。我已經使用 CloudFront 來做正常的 CDN 類型的東西(靜態資產),但我對如何設置這種特定類型的配置有點迷茫。

首先,這是一個瘋狂的想法,還是聽起來不錯?其次,如果它是合理的,我需要知道什麼來設置它?

是的,如果您將整個站點設置為在 CloudFront 後面執行,則可以。然後,您可以為站點配置預設的後端源服務,並為 /blog 開闢一個例外以採用不同的路徑。

配置新的 CloudFront 分配。使用主站點的 ELB 或 EB 主機名作為源。將站點的域名配置為 CloudFront 中的備用域名。

接下來,添加第二個來源,目的地是可以訪問 WP 部署的主機名。創建具有匹配並使用第二個原點的路徑模式的行為。/blog*

(如果 /blog* 匹配站點根目錄中的任何其他內容……不太可能,但假設您在根目錄中有另一個名為 /blogosphere 的頁面,這將被錯誤匹配,因此您實際上需要創建兩個模式,/部落格和 /blog/*)。

Gotcha:請注意,在創建原點時,有一個用於origin path的框。 這可能不會達到您的預期。如果不確定,請將其留空。

源路徑是您希望 Cloudfront 將其添加到它發送到源的請求的前綴,即使它在 URL 中不可見。因此,如果您將其設置為 /test 並且來自瀏覽器的請求是針對 /blog 的,那麼後端伺服器會看到針對 /test/blog 的請求到達。

源路徑允許您預先添加將被請求的路徑,否則傳入路徑將按照從瀏覽器接收到的方式發送。/blog這意味著在您的 WP 安裝中,當您直接連接到 WP 伺服器時,內容的根目錄需要位於,而不是位於/. CloudFront 目前不提供從路徑中刪除組件的任何機制。

還要記住啟用查詢字元串和 cookie 轉發到 WordPress 後端,以使 WordPress 按需要工作。當然,您的主站點也是如此。

如果您的伺服器需要,您可能需要將標頭列入白名單。Host:可能還有其他人,這取決於伺服器需要查看哪些標頭,但通常,您轉發的標頭越多,CloudFront 可以做的記憶體越少,因為如果它將標頭轉發到源,它必須假定任何後續請求在標頭變化可能會收到來自伺服器的不同響應,因此除非所有轉發的標頭都匹配,否則無法從記憶體中提供請求。

最終,在配置和測試之後,您將主機名指向 CloudFront 端點,您就可以上線了。

引用自:https://serverfault.com/questions/729697