私の 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.com に test.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

  • Inkling: Unser Modell mit offenen Gewichten

    Inkling: Unser Modell mit offenen Gewichten (via) Mira Muratis Thinking Machines Lab hat gerade sein erstes Modell mit offenen Gewichten veröffentlicht. Inkling ist „ein Mixture-of-Experts-Transformator mit 975B Gesamtparametern, 41B aktiv“ – ein Apache-2.0-lizenziertes multimodales Modell, das auf 45 Billionen Text-, Bild-, Audio- und Video-Token trainiert wird. Sie versprechen auch Inkling-Small, ein 276B-Modell (12B aktiv), aber…

  • 初创公司正在走向衰败的迹象

    另请参阅您即将被收购的迹象。 当赚钱很容易时,每个人看起来都像天才,即使是经营最差的公司也能提供一些数字。但到 2023 年初,我们现在正处于科技衰退之中,甚至不是整体经济衰退。 正如巴菲特所说; 潮水已经退去,现在我们看看谁在裸泳。 我的一位朋友最近正在评估工作机会,其中一个显然是一家“正在变坏”的初创公司。我很清楚,但他们却不清楚;我想我应该写一篇文章来阐明我所看到的一些东西。 人们喜欢谈论正在崛起的初创公司。风险投资公司希望证明他们很早就看到了潜力,创始人希望招募员工和客户,媒体希望接触到未来的独角兽,而没有人想打击这个小家伙。愤怒和戏剧性的灾难最受关注,但其次是真正努力“让世界变得更美好”的人所带来的积极快乐的氛围。 初创公司在早期形成了某种阿谀奉承的助推器:达到了早期里程碑,增长数字强劲,某种形式的没有 Y 轴的右上图表推动了叙述。极少数甚至最终夸耀了最有意义的 Y 轴:收入。 积极的故事也是一个更容易、更清晰的故事。正如托尔斯泰所说,所有的火箭初创公司都是相似的,但每一个衰落的初创公司都以自己的方式衰落,其衰落的原因完全不同,具体取决于你问的是谁。 我们在这里讨论 S 曲线的另一边。许多陷入困境的初创公司会通过说这是炒作后的道路来逃避自己的衰落,但不要被愚弄了。我们正在谈论保罗·格雷厄姆的启动曲线中不方便且未言明的部分: 当我刚接触创业游戏时,我感到不安,但对此无能为力(我也没有看到足够多的东西来了解)。但现在我看到了对那些没有足够“了解”的人的工作和职业生涯的影响,他们不知道一家曾经伟大的公司何时不再一样。然后,很多年后,很明显 除了你之外的所有人,人们公开地说“公司正处于死亡轨道”之类的话,但当你已经做出了重要的职业、技术堆栈或其他形式的投资选择时,这就太晚了。 所以我想我应该记下一些我所看到的东西来形成一个心理清单,也许可以从其他见过同样东西的人那里得到更多的想法。 免责声明 请注意,此列表是根据经验得出的 来自我工作过的公司和我仅通过朋友/我的网络观察到的公司,所以不要从我的工作经历中得出任何信号。 此外,公司经常会经历衰退阶段,然后再次复苏(最著名的是苹果公司),所以暂时的衰退并不意味着永远的衰退。 好吧,所有必要的免责声明都已排除: 尽管您可以使用它来制定技术堆栈和投资决策,但由于这主要是为了帮助初创公司员工评估工作机会,因此我们将重点关注外部可观察指标(用于加入)和内部可观察指标(用于离开)之间的明确区别。 外部标志 人们:关键高管在短时间内离职(Slack 的离职是这种情况的一个极端极端)或关键产品的开发者“出货和下降”(当他们已经确定公司正在走向糟糕时,以个人高调结束他们在初创公司的时间的常见举动) 社区:对社交媒体上的产品发布和公司活动以及相关的讨论做出回应。当一家初创公司走下坡路时,与过去的辉煌相比,定量和定性的反应都会显示出减弱的兴奋感。仅此一点并不是决定因素,因为没有一家公司能够永远保持热销势头,但它是一个因素。 一个简单的指标是公司社交媒体帖子的频率。这是一个明显有缺陷的指标,您可以对其进行过度索引,但最后一次更新是在 6-12 个月前的初创公司比根本没有尝试过的初创公司出现问题的风险要高一些。 创始人参与度:如果创始人在社交媒体上很活跃(很多人并不活跃)——他们是否明显不太喜欢自己的初创公司?一些分心是可以的,但与用户的互动减少、自我推销/庆祝减少、对公司使命的支持减少就是一个迹象。 产品: 路线图:(经过基础研究)如果不清楚用户下一步想从初创公司看到什么……也许他们不知道 足够关心 想要任何东西。 野心:初创公司最后一次交付技术上困难/令人震惊的东西是什么时候?而不是增量/容易实现的成果? 波兰语:UX/DX/文档/营销是否注重细节?情况有明显恶化吗?那是因为真正关心的人数正在减少。这家初创公司是否是一个功能工厂,在 Beta 版中交付一个又一个的东西,但加起来并没有形成一个连贯的方向? 非信号: 职位空缺:我曾经跟踪初创公司职业页面的长度,以此来衡量它们的表现——一个很棒的领先指标,可以判断初创公司是否刚刚获得一轮大笔融资,那就是职位空缺的突然翻倍。无论这在过去是否有任何价值,它在今天肯定没有价值,因为初创公司都专注于效率,不招聘和招聘一样都是一个好兆头;因此这只是一个非信号。 内部标志 透明度:随着公司变坏,backpatty 事件、全体员工、公告和电子邮件的数量将呈下降趋势,因为可报告的好消息较少。创始人至少不做一次“国情咨文”(如果规模较小,则为季度;如果规模较大,则为年度),这是一个很大的危险信号。 “目标下移”是透明度下降的一个先行指标,其中更有意义但看起来不再那么好的指标被替换为不太有意义但看起来仍然不错的指标。留意诱饵和转换 – 不要生气,因为这种情况发生在我们所有人身上。 人们:与上面的“外部可见”点类似,但这次是根据您对他们的工作和机会集的了解来过滤“有能力的人”(无能力的人离开是一个无信号)。这显然更主观,但在公司内部,你往往可以更清楚地了解公司中的“优秀人才”是否自愿离开。 顾客:客户流失率上升(又称客户离开)是一个明显的负面信号。除此之外,如今大多数初创公司都在内部公开分享收入数据,所以这应该不足为奇,但有一个半量化的“收入质量”概念,只有当你看过去的标题数字时,你才能得到这个概念。诚实地了解您的收入是否来自以十美分的价格出售一美元的服务,以及新销售的价值主张是否越来越依赖于不可持续的承诺。 NPS/PMF 分数:我会第一个说 NPS…

  • গেমের কবিতা # 1

    গেম পোয়েমস হল একটি অনলাইন সাহিত্য ম্যাগাজিন যা সরাসরি খেলার যোগ্য বিন্যাসে নতুন কাজ প্রকাশ করে শর্ট-ফর্ম ভিডিওগেমের শৈল্পিক এবং কাব্যিক সম্ভাবনার অন্বেষণ করতে নিবেদিত৷ এই সমস্যা যেমন কাজ অন্তর্ভুক্ত দ্বিধা (ইফান ইউয়ান), সেকেন্ড থট অন (তেরেজা কোটেসোভকোভা), লাইক আই নেভার মুভড এট অল (অ্যাডাম পাইপ এবং ভিক্টর ক্রাউস), SNAKISM 2 (পিপিন বার), এবং ডাইনোসরের…

  • Podcast Baru Favorit Saya tahun 2023

    Sebagai seseorang yang banyak belajar melalui podcast, saya telah membuat daftar pilihan selama 4 tahun berturut-turut (lihat daftar utama tahun 2019, lalu perbedaan tahun 2020, 2021, dan 2022), jadi inilah waktunya untuk melakukan tahun ke-5(!) Pembaruan 2024: ini reset 2024 Pada tahun 2023 saya akhirnya menjadi pembawa acara podcast semi-sukses, setelah upaya 1, 2, 3….

Deixe um comentário

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