服务结构反向代理
Service Fabric Reverse Proxy
我在获取正确的反向代理时遇到了问题。我在使用反向代理时一直收到“504 Getaway Timeout”。
我已经按照Microsoft's example设置了集群。
恕我直言,我认为集群设置是正确的,唯一的区别是我为代理指定了端口 80 并且我没有使用 SSL 进行测试环境。
我目前正在测试环境中试用,但是生产环境是运行相同的服务,只是w/o反向代理就可以了。此外,我已经在测试环境中公开了其中一项服务的端点,尝试将其称为 w/o 反向代理并且它有效。
我读过 could be caused by the containers,但我使用的是 Windows 2012 RC2 DataCenter。据我所知,它不使用 windows nat 容器。另外,我读到它可能是由 404 错误(示例文档中的#case 2)引起的,它试图重新加载它并且只是尝试超时。
这些是一些可能很重要的总结细节
- Service Fabric 版本:5.5.219.0
- OS: Windows
- SKU:2012-R2-数据中心
- 服务正在使用 WebListener
- 允许所有端口
- 1 节点类型(无状态)
- 使用 ASP.NET Core Web API 模板创建的服务
- VS 2015 企业版
服务端点配置如下:
端点协议="http" Name="ServiceEndpoint" Type="Input"
所有服务和集群都正常。
我已找到导致此超时的原因。只是我没有在请求中得到所需的更改 url 正确。
我的所有服务都包含以服务名称命名的 MVC 控制器。因此,每当我在没有反向代理的情况下调用它们时,我的请求 url 将类似于 http://mycluster.westeurope.cloudapp.azure.com:8280/Notifications/TestMethod
这就足够了,因为它可以通过唯一端口找到 Controller。
我一直试图用反向代理调用它的方式是
http://mycluster.westeurope.cloudapp.azure.com/SomeName.API.Services/Notifications/TestMethod
这还不够,因为 'Notifications' 被解析为 服务 而不是控制器的名称。所以我在没有指定控制器的情况下调用服务和操作。
调用它的正确方法是两次包含服务名称,因为我已经将我的控制器称为服务(我可能会更改)。
这是我必须使用的正确 url
http://mycluster.westeurope.cloudapp.azure.com/SomeName.API.Services/Notifications/Notifications/TestMethod
我已经通过查找 reverse proxy 代码示例弄明白了。
我在获取正确的反向代理时遇到了问题。我在使用反向代理时一直收到“504 Getaway Timeout”。
我已经按照Microsoft's example设置了集群。
恕我直言,我认为集群设置是正确的,唯一的区别是我为代理指定了端口 80 并且我没有使用 SSL 进行测试环境。
我目前正在测试环境中试用,但是生产环境是运行相同的服务,只是w/o反向代理就可以了。此外,我已经在测试环境中公开了其中一项服务的端点,尝试将其称为 w/o 反向代理并且它有效。
我读过 could be caused by the containers,但我使用的是 Windows 2012 RC2 DataCenter。据我所知,它不使用 windows nat 容器。另外,我读到它可能是由 404 错误(示例文档中的#case 2)引起的,它试图重新加载它并且只是尝试超时。
这些是一些可能很重要的总结细节
- Service Fabric 版本:5.5.219.0
- OS: Windows
- SKU:2012-R2-数据中心
- 服务正在使用 WebListener
- 允许所有端口
- 1 节点类型(无状态)
- 使用 ASP.NET Core Web API 模板创建的服务
- VS 2015 企业版
服务端点配置如下: 端点协议="http" Name="ServiceEndpoint" Type="Input"
所有服务和集群都正常。
我已找到导致此超时的原因。只是我没有在请求中得到所需的更改 url 正确。
我的所有服务都包含以服务名称命名的 MVC 控制器。因此,每当我在没有反向代理的情况下调用它们时,我的请求 url 将类似于 http://mycluster.westeurope.cloudapp.azure.com:8280/Notifications/TestMethod
这就足够了,因为它可以通过唯一端口找到 Controller。
我一直试图用反向代理调用它的方式是
http://mycluster.westeurope.cloudapp.azure.com/SomeName.API.Services/Notifications/TestMethod
这还不够,因为 'Notifications' 被解析为 服务 而不是控制器的名称。所以我在没有指定控制器的情况下调用服务和操作。
调用它的正确方法是两次包含服务名称,因为我已经将我的控制器称为服务(我可能会更改)。
这是我必须使用的正确 url
http://mycluster.westeurope.cloudapp.azure.com/SomeName.API.Services/Notifications/Notifications/TestMethod
我已经通过查找 reverse proxy 代码示例弄明白了。