私の 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

  • Weinender Gletscher

    Weinender Gletscher Ein kurzer Dokumentarfilm mit den aufgezeichneten Klängen eines schmelzenden Gletschers. Wenn Sie sich diese riesige Eismasse ansehen, ist es schwierig, eine persönliche Beziehung dazu zu bekommen. Wir wollten diese Landschaft dokumentieren, um uns eine Vorstellung davon zu geben, wie es sich in einem Gletscher anhört. Es gibt auch die Traurigkeit, weil Sie wissen,…

  • क्लिपआर्ट.स्टूडियो – पत्रिका कोलाज निर्माता

    ✂किसी आकृति को ट्रेस करें, या उसे काटने के लिए उसके चारों ओर बिंदुओं पर टैप करें · ज़ूम करने के लिए पिंच करें ✂आपके कैनवास में जोड़ा गया! व्यवस्थित करने के लिए ✕ (ऊपर दाएं) टैप करें – या काटते रहें। ✂ यह नहीं खुलेगा इंटरनेट आर्काइव अभी हमें अपने पेज उपलब्ध नहीं करा…

  • New Safari extension: ChangeTheHeaders to customize HTTP request headers

    New Safari extension: ChangeTheHeaders to customize HTTP request headers Underpass App Company News March 27, 2025By Jeff Johnson of Underpass App Company I’m happy to announce that I’ve just released a new app! ChangeTheHeaders is a Safari extension for iOS, iPadOS, macOS, and visionOS that allows you to customize HTTP request headers such as Accept,…

  • ماذا يحدث عندما يتوقف الذكاء الاصطناعي عن كونه رخيصًا بشكل مصطنع

    عصر الدعم انتهى. وهنا ما يأتي بعد ذلك. 28 مارس 2026  تقطيع منطق كريسيبوس… لقد كنت أفكر فيما سيحدث عندما يتوقف دعم تكاليف استدلال الذكاء الاصطناعي. كل المختبرات الكبرى تخسر المال بسبب الاستدلال في الوقت الحالي، وهذا سوف يتغير. لا أعرف بالضبط كيف تسير الأمور، ولكن هذا هو ما يدور في ذهني. جيد بما…

  • ディスプレイ – Apple

    新しい スタジオディスプレイ カメラ、オーディオ、Thunderbolt 5 を備えた臨場感あふれる 27 インチ 5K Retina ディスプレイ。Mac の理想的なコンパニオンです。 新しい スタジオ ディスプレイ XDR 先進的な 27 インチ 5K Retina XDR ディスプレイ。 2000 nits ピーク HDR 輝度、P3 + Adob​​e RGB、120Hz。究極のプロ用ディスプレイ。 Source link

  • 財富稅建模

    2020年8月 一些政治人物提議除所得稅和資本利得稅之外還徵收財富稅。讓我們嘗試對不同程度的財富稅的影響進行建模,看看它們對新創公司創辦人的實踐意味著什麼。 假設你在二十多歲時成功創業,然後又活了 60 年。財富稅將消耗您多少股票? 如果財富稅適用於您的所有資產,則很容易計算其影響。 1% 的財富稅意味著您每年可以保留 99% 的股票。 60 年後,您剩餘的股票比例將為 0.99^60,即 0.547。因此,直接徵收 1% 的財富稅意味著政府將在你的一生中拿走你 45% 的股票。 (顯然,失去股份並不意味著成為 網 除非每股價值的成長幅度低於財富稅率,否則會更窮。 ) 以下是政府在 60 年內以不同財富稅水準徵收的股票數量: 財富稅 政府採取 0.1% 6% 0.5% 26% 1.0% 45% 2.0% 70% 3.0% 84% 4.0% 91% 5.0% 95% 財富稅通常有一個起始門檻。高門檻會產生多大的差異?為了建立模型,我們需要對股票的初始價值和成長率做一些假設。 假設你的股票最初價值 200 萬美元,公司的發展軌跡如下:你的股票價值在 2 年內增長了 3 倍,然後在 2 年內增長了 2 倍,然後在 2 年內增長了…

Deixe um comentário

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