【问题标题】:Service Fabric Reverse ProxyService Fabric 反向代理
【发布时间】:2017-09-08 13:31:24
【问题描述】:

我在正确获取反向代理时遇到问题。使用反向代理时,我不断收到“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-数据中心
  • 服务正在使用 WebListener
  • 允许所有端口
  • 1 NodeType(无状态)
  • 使用 ASP.NET Core Web API 模板创建的服务
  • VS 2015 企业版

服务端点配置如下: 端点协议="http" Name="ServiceEndpoint" Type="Input"

所有服务和集群都是健康的。

【问题讨论】:

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


    【解决方案1】:

    我找到了导致此超时的原因。只是我没有在请求 url 中得到所需的更改。

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

    这就足够了,因为它可以通过唯一的端口找到 Controller。 我一直试图用反向代理调用它的方式是 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 代码示例找到了答案。

    【讨论】:

      猜你喜欢
      • 2017-05-31
      • 2018-02-07
      • 2021-01-11
      • 2020-09-17
      • 2020-05-01
      • 2018-09-28
      • 2017-10-16
      • 2018-11-17
      • 2017-07-05
      相关资源
      最近更新 更多