我正在尝试(并且失败)设置反向代理。
我试过了:
RewriteEngine On RewriteRule ^ / ping /(.*) http://my.proxy.com/ $ 1 [P,NC]
RewriteLog“managed-fusion-log.txt”
RewriteLogLevel 9
我相信这是有效的,因为我在日志文件中看到了这一点:
2013-01-08T13:49:41 * ** * ** * ** * < / EM> ** * ** * ** * ** * ** * < / EM> ** * ** * ** * ** * ** * < / EM> ** * ** *
2013-01-08T13:49:41 [重写]输入:http://swisscom-live.emusetech.com:81/ping/somecall.svc
2013-01-08T13:49:41 [规则0]输入:/ping/somecall.svc
2013-01-08T13:49:41 [规则0]规则模式匹配
2013-01-08T13:49:41 [规则0]输出:http://my.proxy.com/somecall.svc
2013-01-08T13:49:41 [重写]代理:http://my.proxy.com/somecall.svc
2013-01-08T13:49:41 * ** * ** * ** * ** * ** * ** * ** * ** * 的** * ** * ** * ** * ** * 的** * ** *
然而,实际的网络浏览器向我显示“本地”机器的404错误。日志说它正在做正确的事情,但我无法弄清楚为什么它实际上并没有这样做!
指针赞赏! (在Managed Fusion或其他任何项目上)。
更新:我终于设法让Microsoft特定的方式正常运行。诀窍(我错过了)是我需要创建一个单独的空Web应用程序,并且只在这个新应用程序上创建反向代理。
我怀疑我试图添加的其他应用程序有一些重载配置,这些配置会阻止URL重写工作(但仍然允许重定向)。
仍然对Managed Fusion问题的任何评论感兴趣,不过!!!
答案 0 :(得分:1)
使用托管融合作为代理时遇到同样的问题(404)。
显然除了没有自动添加nuget软件包的模块外,还要注册处理程序。
的Web.config:
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true">
<add name="RewriterModule" type="ManagedFusion.Rewriter.RewriterModule, ManagedFusion.Rewriter" preCondition="" />
</modules>
<handlers>
<add name="RewriterProxyHandler" preCondition="integratedMode" verb="*" path="RewriterProxy.axd" type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</handlers>
</system.webServer>
答案 1 :(得分:0)
当我将上述解决方案移至生产计算机时,它无法用于包含.svc
的网址。事实证明,[这个答案] [5]对另一个问题有解决方案。
最终将此添加到反向代理的web.config中:
<system.web>
<compilation targetFramework="4.0">
<buildProviders>
<remove extension=".svc" />
</buildProviders>
</compilation>
</system.web>
这样就可以实现对远程服务器的服务调用,而不是在本地解释。
这也是Managed Fusion解决问题的结果! : - )