8

環境


ここ数日間、次の問題に取り組んできました。CDN の性質と、新しいルールを手動で確認するため、新しいルールを展開するのに毎回最大 4 時間かかります。

次のトピックで説明するように、現在、Angular アプリケーションをストレージ アカウントにデプロイしています。このストレージ アカウントには、単一のBLOB コンテナーが含まれています。cdn

ここに画像の説明を入力

このBLOB コンテナーのルート内で、角度プロジェクトのフォルダー全体が CI セットアップを介してコピーされています。dist

ここに画像の説明を入力

CDN プロファイルも設定されており、origin-path呼び出された/cdn

ここに画像の説明を入力


問題


残念ながら、現在、デフォルト ファイルに直接アクセスできないという問題が進行中です。

  1. 私が望むのは、Angular アプリケーションからのすべての着信トラフィックをindex.htmlファイルにリダイレクトすることです。これはAngularのルーティングを満たすためです。

    期待される出力を含む入力 URL

  2. さらに、特定の URL を書き換えずに、静的ファイル (画像など) のリクエストを通過させたいと考えています。

この問題に関するさまざまな投稿を見てきましたが、どの回答も私のケースをカバーしていないようであるか、期待される結果を提供していませんでした。

現在、VerizonのAzure CDNのルール エンジン機能を使用しています。

パターンに関しては、コメントで言及されたものを含め、次の記事で言及されているすべてのパターンを使用しました。

また、他のさまざまな記事やstackoverflowの記事を見つけるために少なくとも2日を費やしましたが、私の場合はどれもうまくいきませんでした.

さらに、独自の正規表現パターンも作成しましたが、それらはテスト環境で機能しましたが、CDN にデプロイされると機能しました。

私は通常、次のいずれかの結果になりました。

  • トップ レベル ドメインhttps://myFancyWebsite.azureedge.netは URL を に書き換えずindex.html、http エラーが発生します。404
  • トップレベルドメインはにリダイレクトされますがindex.html、URLパスを追加すると機能しなくなります-使用を開始するとすぐにhttps://myFancyWebsite.azureedge.net/login/callbackhttpエラーが再び発生します404/login/callback
  • トップ レベル ドメインは、URL をhttps://myFancyWebsite.azureedge.net/cdn/cdn/cdn/cdn/cdn/cdn/cdn/cdn/cdn/cdn ....http エラーのようなものに書き換えます。431

私の場合、Microsoftの公式ドキュメントも役に立ちませんでした。

Angular アプリケーションをストレージ アカウントにデプロイするのは私が初めてではないと確信しており、誰かが私と同じ問題を抱えています。

現時点では、ストレージ アカウント全体の展開からの移行を確実に考えているため、正しい方向に向けてくれる情報に感謝しています。


更新 1


ここの記事でも言及されている次のsourceパターンを使用すると、少なくともトップレベルのドメインのファイルへの書き換えを処理できます。((?:[^\?]*/)?)($|\?.*)index.html

残念ながら、リダイレクト元に追加のパターンが必要https://myFancyWebsite.azureedge.net/login/callbackですhttps://myFancyWebsite.azureedge.net/index.html


更新 2


現在、正規表現パターンを 1 日に 1 回か 2 回更新していますが、テスト環境では再び動作しますが、展開すると動作しなくなります。Azure CDN がトップレベル ドメインの後に URL に何かを追加していると思い始めましたが、それを確認する方法がわかりません。

https://regex101.com/r/KK0jCN/23


アップデート 3


私たちは 3025 年を書いていますが、たとえば次のパターンがトップ ドメインの URL 書き換えを処理しない理由はまだわかりません。

https://regex101.com/r/KK0jCN/25

4

3 に答える 3

-1

これに追加するだけです。Azure Verizon Premium CDN を使用していて、Azure エンドポイントがオリジン パスを使用している場合。元のパスは書き換えの一部です。たとえば、$webブロブ内のバージョン管理されたフォルダーを指しているとしましょう。

Azure エンドポイントの設定

したがって、上の図で「Origin path」が2.1.2で、現在の静的アプリケーションが に$web/2.1.2/ある場合、CDN の書き換えは Source: /<your-verizon-origin>/<your-azure-endpoint>/(.*)\/[^?.]*(\?.*)?$--> Destination:になります。/<your-verizon-origin>/<your-azure-endpoint>/$1/index.html

Verizon プレミアム CDN ルール

于 2020-07-27T14:39:26.213 に答える