私の Jekyll サイトに CDN フロントエンドを与える

私の Jekyll サイトに CDN フロントエンドを与える


📅 2025 年 11 月 14 日
|

⏱️ 約 5 分で読めます

.htaccess リダイレクトを維持しながら、Jekyll ベースのサイトを Bunny CDN の背後で動作させることができました。私がやった方法は次のとおりです…

最近 Jekyll に戻って以来、私はこのサイトを Ionos がホストする VPS で実行し、小さなデプロイ スクリプトを使用してサイトを構築し、rsync を実行しています。

これはすべてうまくいきましたが、私は実際には、いくつかの画像とカスタム フォントをホストするだけではなく、Bunny CDN を使用したいと考えていました。静的サイトなので、すべてをストレージ プラットフォームにダンプすることもできましたが、1 つのサイトに数トンのリダイレクトがあります。 .htaccess 長年にわたるさまざまなプラットフォームの移行によるファイル。

Bunny’s Edge Platform でもこれらを処理できたかもしれませんが、リダイレクトの数を考えれば、維持するのは大変だったでしょう。そこで私は、自分の Jekyll サイトの前に Bunny を簡単に置くことは決してできないだろうと考えて、仕事に取り掛かりました。

💡 その時、私はひらめきました。

を使用してバニープルゾーンを作成したらどうなるでしょうか kevquirk.com パブリック ドメインとして使用し、VPS 上に別のドメインを設定し、そこでサイトをホストし、それをプル ゾーンのオリジンとして使用しますか?

私の理論では、Bunny は依然として VPS からコンテンツをリクエストしているだろうということでした。 .htaccess リダイレクトはまだ機能する可能性があります。

…結局のところ、彼らはそうでした。

いくつかの小さなバグ

安全に実験できるように、ライブサイトを複製しました。セットアップは次のようになりました。

  • test.kevquirk.com – Bunny プル ゾーンに設定されたドメイン
  • src.qrk.one – サイトが実際に存在する VPS 上のオリジン ドメイン

最初にやらなければならなかったのは、 url 私のジキルのフィールド _config.yml から kevquirk.comtest.kevquirk.com、サイトを再構築して、にアップロードします src.qrk.one

さて、あなたは次のように考えているかもしれません。 「ケブ、なぜ間違ったドメインでサイトを構築するのですか?」

しかし、私はそうではありません。テスト ドメインを使用してサイトを構築すると、すべてのリンクが次の場所を指します。 test.kevquirk.com/...。元のドメインで構築した場合、すべての内部リンクが間違った場所に誘導されてしまいます。これらは引き続き機能しますが、サイトは次から提供されます。 src.qrk.one、それは私が望んでいることではありません。

次にリダイレクトテストを行いました。訪れました /feed、ヒットするはずです .htaccess にリダイレクトします /feed.xml。リダイレクトは正常に機能しましたが、結果の URL は元のドメインから提供されていました。

だから見る代わりに test.kevquirk.com/feed.xml 見たよ src.qrk.one/feed.xml

これは、Bunny が、私が入力したホスト名ではなく、独自のホスト名を使用してオリジンからファイルを要求したために発生しました。簡単に言うと:

  • 訪れました test.kevquirk.com/feed
  • バニーはキャッシュを確認しました。そこにはなかったので、ファイルの出所を尋ねられました。
  • しかし、Bunny は独自のホスト名 (src.qrk.one)、私が入力したものではありません。
  • Apache は、次からのリクエストを認識しました。 src.qrk.one/feed そして、 .htaccess にリダイレクトします /feed.xml
  • 次に、Apache は、指定されたホスト名を使用してリダイレクト URL を再構築しました。 src.qrk.one

そこで、Apache は次のようにしました。

「ああ、欲しいのね /feed?もちろん。それは src.qrk.one/feed.xml。さあ、行きましょう…」

問題の解決

これは訪問者にとって何も問題にはなりませんが、私は望んでいませんでした src.qrk.one どこにでも現れる。見た目が汚かったです。

2 つの変更によりそれが修正されました。

  1. 有効にする ホストヘッダーの転送 私のバニープルゾーンで。
  2. 追加 test.kevquirk.com のドメインエイリアスとして src.qrk.one 私のVPS上で。

Forward Host Headers により、Bunny は訪問者が使用したホスト名を VPS に通知します。したがって、代わりに:

「私はこれを代表してお願いします」 src.qrk.one

バニーはこう言います。

「私はこれを代表してお願いします」 test.kevquirk.com、 ない src.qrk.one

ドメイン エイリアスにより、Apache がそのホスト名を受け入れ、正しく提供できるようになります。

魔法。 🪄🐇

もう 1 つ再確認する必要があるのは、すべてのページに適切な設定が設定されていることです。 canonical URL。元のドメインはパブリックにアクセスできるため、クローラーはどのドメインが本物であるかを知る必要があります。それは常に Bunny プル ゾーン ドメインである必要があります。

Jekyll ではこれは簡単です。以下を追加します head レイアウトのセクション:

 rel="canonical" href="{{ page.url | absolute_url }}">

最後のストレート

リダイレクト動作が整理されたので、最後のステップはデプロイ スクリプトにパージ ステップを追加して、新しい投稿を公開したり何かを更新したりするたびに Bunny が最新バージョンをフェッチできるようにすることでした。

私が追加したスニペットは次のとおりです。

# --- Clear Bunny Cache ---
echo "🗑 Clearing Bunny Cache..."
PURGE_RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" -X POST \
  -H "AccessKey: $BUNNY_ACCESS_KEY" \
  "https://api.bunny.net/pullzone/$PULL-ZONE-ID/purgeCache")

if ( "$PURGE_RESPONSE" -ne 200 ) && ( "$PURGE_RESPONSE" -ne 204 ); then
  echo "⚠️  Bunny purge failed (HTTP $PURGE_RESPONSE)"
  exit 1
fi

Bunny API キーとプル ゾーン ID をスクリプトの先頭で変数として設定します。の if ステートメントは単に次のように述べています。 「応答が 200 または 204 でない場合は、何が問題だったかを Kev に伝えてください。」

それで終わりです。昨夜、スイッチを入れました。 Bunny CDN は現在、ライブ サイトの前に座っています。また、Ionos では Plesk ライセンスに追加料金がかかるようになったため、VPS を Ionos から Hetzner に移動しました。新しいサーバーのコントロールパネルとしてヘスティアを使用しました。

バグを見つけた場合は、ぜひお知らせください。ただし、現在はすべてが順調に進んでいるはずです。 (私がそこで何をしたかわかりますか?神様、私は面白いです!)

✉️メールで返信

次へ👉🏻
小さなウェブ、大きな声



Source link

Postagens Similares

  • Projektowanie logo

    Niedawno rozpocząłem konkurs 99designs na nowe logo: https://99designs.com/logo-design/contests/logo-brand-ai-engineering-podcast-help-define-industry-1307842/ istniejącego brandingu Odkryłem, że szybkie odpowiadanie na zgłoszenia pomogło artystom szybko opracować nowe wariacje, co było korzystne dla obu stron, ponieważ oczywiście zawężało zakres prac do jednej koncepcji (dla nas było to VAE zamiast ogólnych logo kosmicznych). oto rozważania projektowe, które uznaliśmy za potrzebne: Zabarwienie: dobry kontrast…

  • 獎勵應用程式 Freecash 是如何透過詐騙登上應用程式商店榜首的

    一款名為 Freecash 的資料收集應用程式似乎欺騙了用戶,因為它迅速上升到 App Store 和 Google Play 的排行榜前列,並在該排行榜上停留了數月,直到最近被禁止。 如果您今年使用過 TikTok,您很可能遇到過 Freecash 的廣告。該應用程式被宣傳為一種只需滾動 TikTok 就能賺錢的方式,並在近幾個月躍居應用程式商店榜首,在美國應用程式商店中排名第二。 事實上,根據網路安全公司 Malwarebytes 稱,Freecash 向用戶付費玩手機遊戲,同時收集大量敏感資料。 Malwarebytes 的一份報告指出,該應用程式可能會收集有關用戶種族、宗教、性生活、性取向、健康和其他生物識別信息,並補充說該應用程式本質上是一個數據經紀人,旨在將遊戲開發商與願意安裝並花錢購買手機遊戲的用戶相匹配。 Freecash 上推廣的遊戲包括《大富翁圍棋》和《迪士尼紙牌》等。 《連線》1 月的一份報告發現 Freecash 使用欺騙性行銷手段並誘使用戶在遊戲中花錢,作為回應,TikTok 撤下了 Freecash 的一些廣告,稱該公司違反了有關財務虛假陳述的規定。當時,自由現金否認參與其中,稱這些廣告是由第三方附屬公司而非其自身製作的。 週一,在 TechCrunch 聯繫蘋果公司徵求意見後,蘋果將 Freecash 從其 App Store 下架。截至週一下午,該應用程式仍在 Google Play 商店中列出。 (此後已被刪除)。 螢幕截圖圖片來源:自由現金網站截圖 當聯繫到擁有 Freecash 的德國公司 Almedia 發表評論時,該公司否認了為其平台帶來人為流量或使用欺騙性行銷技術的指控。 Techcrunch 活動 加州舊金山 | 2026年10月13-15日 Almedia 公關經理…

  • Bagaimana Kehilangan Waktu dan Uang

    Juli 2010 Ketika kami menjual startup kami pada tahun 1998, saya tiba-tiba mendapat banyak uang. Sekarang saya harus memikirkan sesuatu yang belum pernah saya pikirkan sebelumnya: bagaimana agar tidak kehilangannya. Saya tahu bahwa kita bisa berubah dari kaya menjadi miskin, sama seperti kita bisa berubah dari miskin menjadi kaya. Namun meskipun saya telah menghabiskan banyak…

  • الذكاء الاصطناعي هو مجرد التفكير والعمل

    إحدى الطرق المفيدة للتغلب على الضجيج والضجيج في محادثات الذكاء الاصطناعي هي استبدال كلمة “AI” بكلمتي “التفكير” و”التنفيذ”. المشكلة التي يواجهها الكثير من الناس هي الاعتقاد بأن الذكاء الاصطناعي هو الحل في حد ذاته، في حين أنه في الواقع مجرد قدرة إضافية على التفكير وقدرة إضافية على العمل. لكن “التفكير” و”العمل” ما زالا يتركان جميع…

  • Verbeteringen in profilering in Go 1.18 · Felix Geisendörfer

    Gepubliceerd: 11 februari 2022 Zonder twijfel zal Go 1.18 een van de meest opwindende releases worden sinds Go 1. Je hebt waarschijnlijk gehoord van belangrijke functies zoals generieke geneesmiddelen en fuzzing, maar daar gaat dit bericht niet over. In plaats daarvan zullen we het hebben over profilering en enkele opmerkelijke verbeteringen benadrukken waar we naar…

  • レビュー: 三体問題 (Cixin Liu)

    三体問題 Cixin Liu による作品は、 地球の過去の記憶 三部作。それは、人類が異星文明と接触した場合に実際に何が起こるかという問題を中心に展開しています。リューは、標準的なファーストコンタクトの物語を提供するのではなく、歴史的および科学的要素に支えられた複雑で多層的な世界を構築します。物語は、毛沢東の文化大革命による精神的トラウマから始まり、秘密の深宇宙通信が初めて放送される孤立したレッドコースト基地に移ります。現代では、この歴史が恐ろしい物理学の危機と衝突し、有名な科学者たちが不可能な実験結果に遭遇します。ナノテクノロジー研究者ワン・ミャオの目を通して、この物語は、3 つの太陽を周回する混沌とした世界をシミュレートする仮想現実ゲームを明らかにし、運命のエイリアン グループ、トリソラリスの暴露につながります。人間の服従を確実にするために、エイリアンは人類科学を破壊するように設計された 11 次元陽子スーパーコンピューターであるソフォンを配備します。 複数のソフォンは、量子効果を通じてマクロの世界を感知するシステムを形成できる可能性があります。たとえば、原子核に 2 つの陽子があるとします。それら 2 つは相互作用し、特定の動きのパターンに従います。スピンを見てみましょう: おそらく 2 つの陽子のスピンの方向は互いに反対でなければなりません。これら 2 つの陽子が原子核から取り出されるとき、それらがどれほど離れていても、このパターンは影響を及ぼします。両方の陽子がソフォンになると、この効果に基づいて相互感知システムが形成されます。さらに多くのソフォンが相互感知フォーメーションを形成できます。この地層の規模は任意のサイズに調整できるため、電磁波を受信して​​マクロの世界を任意の周波数で感知することができます。もちろん、このようなソフォンの形成に必要な実際の量子効果は非常に複雑です。私の説明は単なる例え話です。」 ソース: 三体問題 劉慈欣著 これは、裏切り者の地球トリソラリス組織に対するパナマ運河沿いでの残忍な戦術対決で最高潮に達します。 この小説はいくつかのテーマ、特に知識の限界を探求しています。リュー氏は、物理学に関する私たちの基本的な理解は普遍的な真実ではなく、むしろ局所的な偶然である可能性があると示唆しています。 Frontiers of Science のメンバーが物理学について議論するとき、彼らはよく「SF」という略語を使用しました。それは「サイエンス フィクション」を意味するのではなく、「射手」と「農民」という 2 つの単語を意味します。これは 2 つの仮説への言及であり、どちらも宇宙の法則の基本的な性質に関係しています。射手の仮説では、優れた射撃手は標的に向かって射撃し、10 センチメートルごとに穴が開きます。ここで、ターゲットの表面に知的で二次元の生き物が生息していると仮定します。彼らの科学者たちは宇宙を観察した結果、「宇宙には10センチごとに穴が存在する」という偉大な法則を発見した。彼らは射撃手の一瞬の気まぐれの結果を、変えられない宇宙の法則と誤解しました。一方、農家仮説にはホラーストーリーの趣があります。七面鳥農場では毎朝、農家が七面鳥に餌をやりに来ます。このパターンがほぼ 1 年間変化せずに維持されることを観察した科学者の七面鳥は、次の発見をしました。「毎朝 11 時に食べ物が届く」。感謝祭の朝、科学者はこの法則を他の七面鳥たちに発表します。しかしその朝、11時になっても食べ物は届かない。代わりに、農夫がやって来て、群れ全体を殺します。 ソース: 三体問題 劉慈欣著 人間の理解には厳しい境界があるように示されていますが、時間と空間における私たちの特定の配置によって厳密に制限されています。この宇宙的な謙虚さとともに、この本は個人とシステムの間の摩擦にも踏み込み、大規模で組織的な政治運動がいかに独身者の生活を押しつぶし、再形成するかを示しています。壊滅的なドミノ効果で、国家によってイェ・ウェンジエに与えられたイデオロギー的トラウマにより、彼女は人類全体を破滅させる壊滅的な宇宙的選択をすることになります。 彼らは何をロックしているのでしょうか?YE: 彼らは人類科学の進歩を封鎖しています。この 2 つの陽子の存在のせいで、人類はトリソララン艦隊の到着までの 4 世紀半の間、重要な科学的発展を行うことができなくなります。エヴァンスはかつて、2つの陽子が到着した日は人類科学が滅んだ日でもあると語った。 ソース: 三体問題 劉慈欣著 最終的には、 三体問題 『』は多くの層を中心に構築された小説であり、それぞれが異なる視点を明らかにします。私たちは一部のキャラクターを他のキャラクターよりも好む立場にありますが、リューはすべてのキャラクターの視点に共感する方法を持っています。なぜなら、それらはすべて歴史だからです。…

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *