Full site CDN acceleration for Discourse

I have a question concerning CDN technology.

Am I right that cdn can only cache the files in my site and can’t cache hotlinked files from another site?

I store catalogue files (mps and pictures) on another server and hotlink them on my Discourse site. Am I right that such files won’t be cached by cdn? Is there a way to cache the hotlinked files too?

Unless you tell discourse not to, it will pull those remote images to its own image store. The below assumes you turned that off.

You should put that site behind CDN and then share the CDN url to discourse.

If you put a CDN in front of your image site but share the origin url to discourse, You can use a built in feature to replace the origin url with the CDN url .

「いいね!」 2

Am I right, that if I activate the CDN feature in Discourse and switch off saving the origin to Discourse, the cdn service will cache these external files and Discourse will replace all the links to files hotlinked from another site?

I doubt that can caches external files hotlinked from other sites. Can anybody approve it?

FYI - I’ve posted a new thread on how to setup full site CDN acceleration (and SSL termination) using AWS Cloudfront here (link below). There be dragons here - so tread lightly.

「いいね!」 1

エラー Reason: CORS header ‘Access-Control-Allow-Origin’ missing が発生した場合、それでも必要ですか?

Githubでその変数を使用しているものを見つけることができませんでした。


編集:設定コメントにはまだ必要と書かれており、追加すると機能します。なので、これで受け入れます :slight_smile:

現在2023年ですが、以下の4つのルールは依然として厳密に従う必要がありますか?例えば、CDNでメインドメイン名を高速化するように設計されたAkamaiを使用する場合、メッセージバスやロングポーリングはまだオリジンにリクエストする必要がありますか?これらの設定はどこに行うべきですか?ロングポーリングのベースURLは管理ダッシュボードから削除されたようですが?

「いいね!」 2

ドメインが異なる場所からMessage Busリクエストを処理するための高度な設定がありますが、非常に複雑です。

「いいね!」 1

「long polling base url」は、管理ダッシュボードから削除されたため、Railsコンソールを通じて設定する必要があります。サイトがフルサイトCDNモードで正常に動作するために設定が必要な理由がどこかに記載されていたのを、見逃したのかもしれません。

同様に、DISCOURSE_ENABLE_CORS: true は app.yml で設定する必要があります。

app.yml の環境変数 (DISCOURSE_LONG_POLLING_BASE_URL) で設定する必要があります。設定する必要がある人は非常に少なく、設定する場合はその方法を理解していると想定されるため、これは非表示になっています。

「いいね!」 1

ありがとうございます、@pfaffman!これらの大文字の変数はすべて app.yml に入れるべきだと気づくべきでした。
では、メッセージバスのユースケースはどのように有効になりますか?例えば、通知などを引き起こす投稿への返信などですか? DISCOURSE_LONG_POLLING_BASE_URL を設定せずに、私のサイトでメッセージバスが期待どおりに機能しているかどうかを確認するためにユースケースのテストを実行します。

こんにちは。
「long polling base url」は管理ダッシュボードから削除されましたか?それとも、この設定はRailsコンソールから行うことができますか?

long_polling_base_url は非表示のサイト設定ですが、app.yml で環境変数を使用していない場合は、rails コンソールから設定できます。

「いいね!」 3

このリストは、Discourse に関するより多くの洞察を与えてくれます。
CDN をウェブサイトに設定し、エッジキャッシュに到達しましたが、まだメッセージバスの問題とその応答ヘッダーを経験していませんが、まだ確実ではありません。CORS 設定も行っていません。

Cache-Control: must-revalidate, private, max-age=0

こんにちは、
別のスレッド Full Site CDN Using AWS CloudFront - #2 by Hyan で質問を投稿しました。同じ設定を行い、#DISCOURSE_CDN_URL: https://discourse-cdn.example.com を変更せずにそのままにしました。これをウェブサイトと同じURLに設定できますか?たとえば、http://forum.example.com です。そうでなければ、ドメイン名のない相対パスでアセットURLが存在します。
@sam または @pfaffman がヒントを教えていただけると幸いです。

CDNとしてCloudflareを使用することは推奨しません。一部のユーザーは使用しています。彼らが役立つかもしれません。

編集:ああ、すみません。これは「サイト全体CDN…」です。おそらく私はここに貢献すべきではありません。

いいえ、動的コンテンツのキャッシュをサポートするAkamai CDNを使用しています。
このスレッドの最初の投稿から、URLがウェブサイトのURLと同じであっても、フルサイトCDNではないDISCOURSE_CDN_URLを設定する必要があるようです。設定するとサイトが壊れたり、元に戻せない結果になったりしないか、最終的にソフトウェアを最初から再インストールしなければならないのではないかと心配しています。この投稿 Full Site CDN Using AWS CloudFront では、著者は設定せずDISCOURSE_CDN_URLを変更せず、message-bus/long-pollingを提供するために別のURLを必要としません。私はこのソリューションを使用しており、これまでのところ私のウェブサイトは正常に動作しています。このソリューションの唯一の欠点は、ページソースに多くの相対URL(ベースURLなし、DISCOURSE_CDN_URLの値は空)が表示されることで、本番レベルのウェブサイトのように見えないことです。

質問のフォローアップですが、この投稿で尋ねているのと同様の投稿を見つけました。CloudFront not caching static files - #4 by Falco
@Falco の回答に感謝します。このフルサイト CDN セットアップで、DISCOURSE_CDN_URL を DISCOURSE_HOSTNAME と同じに設定できますか?フルサイト CDN は CDN がホスト名の URL を加速することを意味すると想定しているため、DISCOURSE_CDN_URL は DISCOURSE_HOSTNAME と同じになります。しかし、メタにはこれに関するまともなドキュメントがありません。

うさぎのテンプレートはありますか?

それにはテンプレートは不要です。バニーをディスコースサイトからプルするように設定し、app.yml で DISCOURSE_CDN_URL をバニー提供の CDN エンドポイントに設定するだけです。

「いいね!」 1

VPSのIPアドレスとBunny DNSで「CDNアクセラレーション」として試しています。動作はしますが、すべてのユーザーが同じIPアドレスになってしまいます。

設定を見つけました。「X-Real-Ip」という名前です。