Iis
IIS 反向代理無法在 ASP.NET 中使用 Response.Redirect()
該站點設置在 上
localhost:8080
,反向代理使用localhost:8080/myProxy
.處理標準連結時,一切都很好。我可以查看代理 url 並按預期查看所有內容。來自的連結
localhost:8080/myProxy/default.aspx
按localhost:8080/myProxy/about.aspx
預期進行。我遇到的問題是在使用 .NET的地方
Response.Redirect()
,url 更改為網站的實際位置而不是代理。即連結來自
localhost:8080/myproxy/default.aspx
->localhost:8080/about.aspx
。請問我該如何解決?
這是我的配置:
<system.webServer> <modules runAllManagedModulesForAllRequests="true"/> <urlCompression doStaticCompression="false" doDynamicCompression="false" dynamicCompressionBeforeCache="false" /> <rewrite> <rules> <rule name="Reverse Proxy to my site" stopProcessing="true"> <match url="^myProxy/(.*)" /> <action type="Rewrite" url="http://localhost:8080/{R:1}" /> </rule> </rules> <outboundRules> <rule name="ReverseProxyOutboundRule1" preCondition="ResponseIsHtml1"> <match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script" pattern="^http(s)?://localhost:8080/(.*)" /> <action type="Rewrite" value="/myProxy/{R:2}" /> </rule> <rule name="RewriteRelativePaths" preCondition="ResponseIsHtml1"> <match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script" pattern="^/(.*)" negate="false" /> <action type="Rewrite" value="/myProxy/{R:1}" /> </rule> <preConditions> <preCondition name="ResponseIsHtml1"> <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" /> </preCondition> </preConditions> </outboundRules> </rewrite> </system.webServer>
很抱歉回答我自己的問題,但我認為這值得為其他人提供資訊:
使用時
Response.Redirect
,出站規則開始發揮作用。使用 Fiddler 查看請求有助於了解連結的情況。
Response.Redirect()
正在嘗試發送到/About.aspx
(響應標頭中的傳輸)。這沒有被正則表達式接收。
我需要的唯一出站規則是設置
Response_location
如下:<rule name="Response Status Update" preCondition="ResponseStatus" stopProcessing="true"> <match serverVariable="RESPONSE_Location" pattern="^/(.*)" /> <action type="Rewrite" value="http://myServer:8080/myProxy/{R:1}" /> </rule>
入站規則保持不變。