首页 文章

服务结构反向代理

提问于
浏览
1

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

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

我读过它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

服务 endpoints 配置如下: endpoints 协议=“http”Name =“ServiceEndpoint”Type =“Input”

所有服务和集群都很 Health .

任何帮助,将不胜感激!

1 回答

  • 2

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

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

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

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

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

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

相关问题