2

CDN(コンテンツ配信ネットワーク)から提供されているSVGファイルでクロスドメインの問題が発生しているため、Python/Djangoアプリケーションであるプライマリドメインとは異なるドメイン名から取得されています。これらのSVGファイルのサーバー側プロキシとして機能する特別なビューを設定して、ドメイン名をマスクし、クロスドメインの問題を回避したいと思います。問題は、SVGやその他のタイプ(.jpg、.js、.png、.mp4など)のような静的ファイルのURLに対して高速httpリクエストを作成し、それらをチャンクストリーミングhttp応答で提供する方法です。リクエストストリームからチャンクを受け取ります。

もちろん、DjangoとWSGIの外部でこれを行う方が速いかもしれません。おそらくツイストサーバーの方が良いでしょう。したがって、最終的には、必要なことを達成するための最速/最高のPythonメソッドを探しています。推奨されるソリューションのサンプルコードを本当に探しています。

どうもありがとう!

4

2 に答える 2

2

nginxをApacheの前に置くことができます。これには、静的ファイルの提供が改善され(IOWではApacheではなく静的ファイルを処理できる)、Apache/mod_wsgiを低速のクライアントから分離するなどのさまざまな利点があります。それが済んだら、DjangoアプリにX-Accel-Redirectヘッダーを生成させることができます。このヘッダーは、nginxが解釈して新しいサブリクエストを発行します。そのサブリクエストのターゲットURLは、CDNからファイルをフェッチし、元のリクエストに応答しているかのようにファイルを返すためのnginxのプロキシ定義設定である可能性があります。

于 2012-11-08T07:36:12.950 に答える
1

だから私はあなたのためにいくつかの可能な解決策を持っています。最初のものはPythonですが、それは最善の選択肢ではないかもしれません。

1)Twistedには、にリバースプロキシサーバーが付属していますtwisted.web.proxy彼らのサイトにはかなり単純な(しかし効果的な)例があります

2)アプリケーション(最新のブラウザーなど)によっては、CDN構成にCORS応答ヘッダーを追加すると機能する場合があります。確認するために、アプリケーション(ブラウザー?)はSVGリソース(「Origin:」httpヘッダーを使用)に対してGET要求を行おうとしますが、レンダリングを拒否しますか?

もしそうなら、あなたはあなたのブラウザの同一生成元要件をトリップしているかもしれません。オリジンは、ヘッダーCross-Domain-Allow-Origin: *付きのHTTPリクエストへの応答とともに、ヘッダーまたは同様のヘッダーを返すことで、この要件を緩和できますOrigin:

CDNによっては、クロスオリジンリクエストのCORS応答ヘッダーを有効にするためのメタデータの例を明確化/提供できる可能性があります

3)Pythonをリバースプロキシとして絶対に使用する必要がありますか?apachenginxはどちらも、Pythonを使用せずにストリーミングリバースプロキシを実装するための非常によくテストされたモジュールを備えています。Pythonでこれを実行しようとすると、面白くて称賛に値するかもしれませんが、HTTPサーバー内で直接実行する場合とほぼ同じパフォーマンスレベルに拡張することはできません。

于 2012-11-08T07:28:21.500 に答える