私はリクに同意します。画像を別の Web サーバーから提供する場合は、別の Web サーバーで提供します。例えば:
<IMG src="images/Brett.jpg">
になる
<IMG src="http://brettnesbitt.akamia-technologies.com/images/Brett.jpg">
どんな種類のロードバランサーでも、Web サーバーのパイプからイメージをフィードしますが、これは回避しようとしていることです。
もちろん、私はあなたが本当に欲しいものを知っています。あなたが本当に欲しいのは、次のようなリクエストです。
GET images/Brett.jpg HTTP/1.1
自動的に次のように変換されます:
HTTP/1.1 307 Temporary Redirect
Location: http://brettnesbitt.akamia-technologies.com/images/Brett.jpg
この方法では、画像を他の Web サーバーにコピーする以外は何もする必要はありません。
それは私が本当にどうすればいいのかわからないということです。
「NAT」という語句を使用することで、ファイアウォール/ルーターが HTTP 要求を受信し、その HTTP 要求が画像ファイルに対するものであった場合、その要求を別の内部サーバーに転送する必要があることを意味します。
これにより、実際に何を保存しようとしているのかという疑問が生じます。どの内部 Web サーバーが HTTP 要求を処理しても、データは依然としてファイアウォール/ルーターのパイプを通過する必要があります。
私がそれを持ち出す理由は、誰かが別のサーバーから画像を提供したいという一般的なシナリオは、実際のロジックから高帯域幅でほとんど静的で低 CPU コストのコンテンツを分割したいからです。
NAT を使用してパケットを書き換えて別のサーバーに送信するだけでは、その一般的な問題には対応できません。
もう 1 つの理由は、画像がシステム上の静的コンテンツではないためである可能性があります。
GET images/Brett.jpg HTTP/1.1
実際には、CPU コストが高いか、ServerB で利用可能なデータ (SQL Server データベースなど) のみを使用して、オンザフライでイメージを構築します。
この場合、画像リクエストで別のサーバー名を使用します。
GET http://www.brettsoft.com/default.aspx HTTP/1.1
GET http://imageserver.brettsoft.com/images/Brett.jpg HTTP/1.1
NAT ルールを上書きして別のサーバーに送信するネットワーク パケット インスペクションを使用して、あなたが何を望んでいるのか理解しています。
Webプロキシがこれを行う場合、より「プロキシっぽい」ように聞こえます。(つまり、pfSense と m0n0wall では実行できません)
これは、かつて使用した一種のソリューションにつながります。リクエストを分析し、内部サーバーから適切なリクエストを作成し、バイナリがクライアントへのレスポンスを書き込むカスタム Web サーバーです。
お尻の解決策のその痛みは、あいまいさによるセキュリティを明らかに信じている「セキュリティコンサルタント」によって主張されました。
IIS 自体がそのようなことを行うことができないことは知っていますが、他の Web サーバー製品については知りません。
Linux ベースのルーター用のカスタム カーネル モジュールを作成したい場合は、パケットを検査して適切なアクションを実行することができるようです。そのようなモジュールが存在する可能性があります。どうやら、出発点として使用できるオープンソースのモジュールが他にもたくさんあるようです。
でも、自分の頭を撃ちたい。