服务结构反向代理

时间:2017-04-12 16:36:44

标签: timeout reverse-proxy azure-service-fabric gateway



我正面临着让Reverse Proxy正确的问题。我一直在" 504 Getaway Timeout"当我使用反向代理时。 我已按照microsoft's example设置了群集。 恕我直言,我认为群集设置是正确的,唯一的区别是我为代理指定了端口80,我没有使用SSL进行测试环境。


我现在正在测试环境中尝试,但是生产环境正在运行相同的服务,只是没有反向代理,这很好。此外,我已经为测试环境中的一个服务公开了一个端点,尝试用无反向代理调用它并且它工作正常。

我已经读过它could be caused by the containers,但我使用的是Windows 2012 RC2 DataCenter。据我所知,它不使用Windows nat容器。此外,我已经读过它可能是由404错误(示例文档中的#case 2)引起的,它会尝试重新加载它并且只是超时尝试。

这些是可能很重要的一些总结细节

  • Service Fabric版本:5.5.219.0
  • 操作系统:Windows
  • SKU:2012-R2-Datacenter
  • 服务正在使用WebListener
  • 允许所有端口
  • 1 NodeType(无状态)
  • 使用ASP.NET Core Web API模板创建的服务
  • VS 2015 Enterprise

服务端点配置如下:  端点协议=" http"名称=" ServiceEndpoint"类型="输入"

所有服务和群集都很健康。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:2)

我找到了这个超时的原因。只是我没有在请求网址中获得所需的更改。

我的所有服务都持有以服务名称命名的MVC控制器。因此,每当我在没有反向代理的情况下调用它们时,我的请求网址就像http://mycluster.westeurope.cloudapp.azure.com:8280/Notifications/TestMethod

这就足够了,因为它可以通过唯一端口找到控制器。 我试图用反向代理调用它的方式是 http://mycluster.westeurope.cloudapp.azure.com/SomeName.API.Services/Notifications/TestMethod

这还不够,因为'通知'被解析为服务的名称,而不是控制器。所以我在没有指定控制器的情况下调用服务和操作。

调用它的正确方法是两次包含服务名称,因为我已经将我的控制器称为与服务相同(我可能会改变它)。 这是我必须使用的正确网址 http://mycluster.westeurope.cloudapp.azure.com/SomeName.API.Services/Notifications/Notifications/TestMethod

我通过查找reverse proxy代码示例找到了它。