我想使用反向代理将我的一个端点指向其他地方托管的资源。我的主服务器(托管其他所有内容的服务器)位于Azure Web App中,并且工作正常。
我一直在使用这个看似防故障的文章以及它底部提到的其他链接:https://blogs.msdn.microsoft.com/zhiliang_xus_blog/2016/01/19/build-a-google-reverse-proxy-site-on-azure-web-app-in-less-than-3-minutes/
作为基准,我使用了一个没有附加代码的Web应用程序,并确认反向代理有效。这是通过手动创建/编辑web.config
文件和applicationHost.xdt
文件然后重新启动服务器来完成的。
我尝试了3种不同的方法(全部用于干净的新网络应用程序),所有这些方法对我来说都失败了:
这3种方法都不起作用。这是Azure中的错误吗?我该如何解决这个问题?
答案 0 :(得分:1)
您发布的链接/方式使用URL Rewrite来实现反向代理。我测试了它,它与我的空Web应用程序工作正常。在向Azure Web App发布Web应用程序(例如,ASP.NET MVC Web应用程序)后,URL Rewrite停止工作。原因是您的Web应用程序的所有请求都由ASP.NET路由模块路由。
要为某些URL启用URL重写,我们需要为这些URL禁用ASP.NET路由。例如,如果您想用" product / xxx"重写所有请求。格式化到另一个站点。您可以将以下代码添加到RouteConfig.cs文件中。
routes.Ignore("product/{action}");
答案 1 :(得分:1)
发布 XML转换(XDT),您重启了网站吗?
我建议你从 Ruslan 看看这个博客:
http://ruslany.net/2014/05/using-azure-web-site-as-a-reverse-proxy/
它讨论了使用网站扩展。它实现了反向代理,并为您进行XDT转换。
如果上面的设置正确,那么网址重写规则就有问题。我建议您启用失败的请求跟踪并进一步调试。
答案 2 :(得分:0)
此特定情况下的问题是我的web.config
文件的位置。
它必须位于应用程序的根目录中,在我的情况下,不是 site\wwwroot
。我的代码正在生成并复制到site\wwwroot\dist
。将配置文件放在该目录中可以解决问题。
此外,还有一些日志可以启用,以便了解正在进行的操作:https://docs.microsoft.com/en-us/azure/app-service-web/web-sites-enable-diagnostic-log