ポート 8080 でセルフホステッド API を実行しています。アプリケーション「MyApiTestsite」を追加しました。/api/ または /signalr/ へのすべてのリクエストをポート 8080 に転送したいと思います。
http://mycompany/MyApiTestsite -> untouched
http://mycompany/MyApiTestsite/signalr/* -> http://mycompany:8080/signalr/*
http://mycompany/MyApiTestsite/api/* -> http://mycompany:8080/api/*
私はすでにインストールしていARR
ます(これは必要ですか?)とURL Rewrite
.
これまでの私のルールは次のとおりです(SignalRの場合):
<rule name="Rewrite SignalR to port 8080" patternSyntax="Wildcard" stopProcessing="true">
<match url="signalr/*" />
<serverVariables>
<set name="SERVER_PORT" value="8080" />
</serverVariables>
<action type="Rewrite" url="{R:0}" appendQueryString="true" logRewrittenUrl="false" />
</rule>
ログファイルを確認したところ、ルールが一致しました。ただし、まったく機能しません。
- RelativePath (私のアプリケーション) を取り除く方法がわかりません
MyApiTestsite
- ログを確認すると、ポートは置き換えられませんでした
ログ:
RULE_EVALUATION_END RuleName="Rewrite SignalR to port 8080", RequestURL="MyApiTestsite/signalr/hubs", QueryString="", StopProcessing="true", Succeeded="true"
URL_REWRITE_END RequestURL="/MyApiTestsite/signalr/hubs"
GENERAL_CHILD_REQUEST_START SiteId="4", RequestURL="http://mycompany:80/MyApiTestsite/signalr/hubs", RequestVerb="GET", RecursiveLevel="1"
更新:この投稿 に従って試してみました。しかし、それでもうまくいきません。URL は適切に見えますが、MvcHandler が引き継ぎ、404 を返します。
URL_REWRITE_END RequestURL="http://mycompany:8080/signalr/hubs"
USER_SET AuthType=""、UserName=""、SupportsIsInRole="true"
HANDLER_CHANGED
OldHandlerName="ExtensionlessUrlHandler-Integrated-4.0"、NewHandlerName="System.Web.Mvc.MvcHandler"、NewHandlerModules="ManagedPipelineHandler"、NewHandlerScriptProcessor=""、NewHandlerType="System.Web.Mvc.MvcHandler、System.Web.Mvc 、バージョン=5.1.0.0"GENERAL_SEND_CUSTOM_ERROR HttpStatus="404"、HttpSubStatus="4"、FileNameOrURL="404.htm"
更新 2:
これが私がやりたいことの写真です...
Update 3
今回はServer Farms
代わりに使ってみました。URL が変更されたはずなのに、元の URL に戻ってしまった:
ARR_WEBFARM_ROUTED WebFarm="mycompany API", Algorithm="LeastRequests"
HANDLER_CHANGED OldHandlerName="", NewHandlerName="ApplicationRequestRoutingHandler", NewHandlerModules="ApplicationRequestRouting", NewHandlerScriptProcessor="", NewHandlerType=""
ARR_SERVER_ROUTED RoutingReason="LoadBalancing", Server="mycompany", State="Active", TotalRequests="1", FailedRequests="0", CurrentRequests="1", BytesSent="0", BytesReceived="0", ResponseTime="0"
GENERAL_SET_REQUEST_HEADER HeaderName="Max-Forwards", HeaderValue="10", Replace="true"
GENERAL_SET_REQUEST_HEADER HeaderName="X-Forwarded-For", HeaderValue="xxx.xx.xx.xxx:52327", Replace="true"
GENERAL_SET_REQUEST_HEADER HeaderName="X-ARR-SSL", HeaderValue="", Replace="true"
GENERAL_SET_REQUEST_HEADER HeaderName="X-ARR-ClientCert", HeaderValue="", Replace="true"
GENERAL_SET_REQUEST_HEADER HeaderName="X-ARR-LOG-ID", HeaderValue="f8exxxc2-7a6d-4cf6-a3c6-ecde245a0d80", Replace="true"
GENERAL_SET_REQUEST_HEADER HeaderName="Connection", HeaderValue="", Replace="true"
//>>>>>now it gets changed back!!! Why????<<<<<<
URL_CHANGED OldUrl="http://mycompany API/signalr/hubs", NewUrl="/MyApiTestsite/signalr/hubs"