MVC5アプリケーション用のIIS 8.5でリバースプロキシを正しく設定できません。我々は、サードパーティ製のアプリケーションTibco Spotfire WebPlayer 7.0.1を使用して、MVC webappに統合します。これを行うには、Javascript APIを使用してWebPlayerからレポートを開き、iframeに挿入します。MVC 5アプリケーションのIISリバースプロキシ設定の問題
WebPlayerがインストールされているバックエンドサーバーにリクエストを送信できるようにリバースプロキシを設定する必要があります。私たちの主なhttp://mywebapp.com/
に位置webappの書き換えである必要があり、すべての要求http://mywebapp.com/SpotfireWeb/...
のように見え、プライベートIPにあるバックエンドサーバhttp://172.29.1.7/SpotfireWeb/...
私はARR 3.0とURL書き換えモジュール2.0を使用してリバースプロキシを設定し、それが」doesnの主な問題* .ashx、* .aspx、* .axd、* .asmxファイルで動作します。これは、ARR/RewriteModuleといくつかのハンドラの競合のように見えますし、別のサーバーに
詳細を要求を渡すことはできません:
私はhttp://mywebapp.com/SpotfireWeb/secret.html
要求のような静的なhtmlファイルをロードしようとするに書き直してきています172.29.1.7
サーバーと私はこのファイルの内容を得ました。しかし、一度私がhttp://mywebapp.com/SpotfireWeb/GetJavaScriptApi.ashx?Version=6.0
のようなものを要求すると、私は404
のエラーをmywebapp.comから得ました。私はWiresharkを実行し、バックエンドサーバ172.29.1.7
へのリクエストがリクエストに* .ashxファイルが含まれていてもまったく動かないことを発見しました。 私はFailed Requests Trace
をインストールし、私はいくつかのハンドラを削除このと遊ぶSystem.Web.Mvc.MvcHandler
にApplicationRequestRoutingHandler
を変更HANDLER_CHANGED
が発生し、そのイベントを発見し、今Wiresharkのは、バックエンドサーバーに要求をキャッチします。ハンドラを削除するというこのアプローチは正しいとは思えません。私は間違った方法で何かを構成することができますか? http://mywebapp.com/SpotfireWeb/AjaxService.asmx/InitiateOpen
へのPOSTリクエストを処理していなかったと私は私の最初のアプリから404エラーを得たとき、私は問題に直面したことにより、1つのモジュールを取り外す とにかく
、。 * .asmxハンドラを削除しても、私はまだ同じエラーが発生しています。これは今私が立ち往生するポイントです。 mywebapp.comのweb.configファイルから
私の書き換えルール。私はウェブサイトレベルでそれを設定しました:
<rewrite>
<rules>
<rule name="ReverseProxyInboundRule1" enabled="true" stopProcessing="true">
<match url="SpotfireWeb/?(.*)$" />
<action type="Rewrite" url="http://172.29.1.7/SpotfireWeb/{R:1}" logRewrittenUrl="true" />
<serverVariables>
<set name="ORIGINAL_HOST" value="{HTTP_HOST}" />
</serverVariables>
</rule>
</rules>
<outboundRules>
<clear />
<rule name="ReverseProxyOutboundRule1" preCondition="" enabled="true">
<match filterByTags="A, Area, Base, Form, IFrame, Img, Input, Link, Script" pattern="SpotfireWeb/?(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="true" />
<action type="Rewrite" value="http://mywebapp.com/SpotfireWeb/{R:1}" />
</rule>
<rule name="ReverseProxy_Redirection" preCondition="IsRedirection" enabled="true">
<match filterByTags="A, Area, Base, Form, IFrame, Img, Input, Link, Script" serverVariable="RESPONSE_Location" pattern="^http://[^/]+/(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="true">
<add input="{ORIGINAL_HOST}" pattern=".+" />
<add input="{URL}" pattern="^/(SpotfireWeb)/?.*" />
</conditions>
<action type="Rewrite" value="http://{ORIGINAL_HOST}/{C:1}/{R:1}" />
</rule>
<preConditions>
<preCondition name="IsRedirection">
<add input="{RESPONSE_STATUS}" pattern="3\d\d" />
</preCondition>
</preConditions>
</outboundRules>
</rewrite>
誰かに似たものを見ましたか? 私はMVCハンドラの根本的な原因を想定していますが、どこを理解できません。