从自定义域使用反向代理和 SSL 访问 Service Fabric

Posted

技术标签:

【中文标题】从自定义域使用反向代理和 SSL 访问 Service Fabric【英文标题】:Accessing Service Fabric with reverse proxy and SSL from custom domain 【发布时间】:2018-08-30 17:07:50 【问题描述】:

通过遵循许多文档/教程,我在我的 SF 中使用内核和反向代理实现了 SSL。 我成功了,但访问点 URL 如下:https://mycluster.westeurope.cloudapp.azure.com:19081 在我实施 https 之前,我有一个 CNAME mycustomdomain.com 重定向到 mycluster.westeurope.cloudapp.azure.com 工作正常。 所以现在,我想知道是否有办法打电话给http://mycustomdomain.com 并访问实际的 Uri。例如,有没有办法通过探针/lbrules 来处理我已经拥有的东西?还是我必须实现应用程序网关或使用 API 管理或其他方式?

编辑:LBRules+探针

AppPortProbe : 44338 (backend ssl port in the SF)
FabricGatewayProbe : 19000
FabricHttpGatewayProbe : 19080
SFReverseProxyProbe : 19081

[Rule : Probe]
[AppPortLBRule (TCP/80 to TCP/19081) : 19081]
[LBHttpRule (TCP/19080) : 19080]
[LBRule (TCP/19000) : 19000]
[LBSFReverseProxyRule (TCP/19081 to TCP/44338) : 44338]

【问题讨论】:

【参考方案1】:

你的问题太笼统了,有太多的问题可能会带来很多答案,我会尝试用几个选项来回答:

在您的场景中,要访问相同的 url,您应该改用 https://mycustomdomain.com:19081

这里的问题是,当您设置集群时,集群使用的证书仅对域“mycluster.westeurope.cloudapp.azure.com”有效,而您的域在您使用的证书中无效SF,一旦你向它提出任何请求,它就会失败。

您可以跳过浏览器上的证书验证错误并继续。在您的应用程序中您也可以这样做,但问题是这样做不是一种友好的方式。

为了能够在没有任何冲突的情况下使用该域,您必须注册为您拥有的域创建的自己的证书。

因为使用的是反向代理,所以还得在集群配置中定义证书,在this link中查找:reverseProxyCertificate

使用 SSL 部署应用程序会发生类似的情况,但在您的应用程序中您可以定义要在启动时使用的证书,在集群中您必须在集群配置中定义它。

您可以在此处找到更多信息: Manage service fabric cluster security certificates

如果问题出在端口上,您有两种选择:

    在负载均衡器中创建“端口转发”规则,以转发任何 在 80 端口请求到 19081 端口。您可以找到 here 如何使用 powershell 进行操作。

    更新集群/服务配置以监听端口 80 而不是 19081。check it here

【讨论】:

我真的不能要求客户访问我的网站并告诉他应该在最后指定 https 和我的反向代理的端口。必须是 mydomain.com,它将为他带来mycluster.westeurope.cloudapp.azure.com:19081 的内容,问题是,我在哪里以及如何进行此映射 我在答案中添加了额外的信息。如果问题是端口你必须添加负载均衡器转发规则,如果是证书,你必须在集群和反向代理中注册它,你描述你不希望你的客户输入域之外的任何内容,请不要忘记,如果他们只是在浏览器中键入您的域,反向代理本身不会为您带来任何网站\服务,如果您要公开网站,他们仍然必须传递 ApplicationName 和 ServiceName,你使用了错误的服务。 到目前为止,我只在开发服务器上使用未签名的证书,所以没问题。目前,使用 mycluster.westeurope.cloudapp.azure.com:19081 将我带到我的 asp.Net core 2 angular 项目的后端端口,所以这正是我需要的,如果我可以用我的域 url 替换那个 url。那么如果可以通过负载均衡来实现,那么应该如何配置呢?我以前从来不需要做任何网络... atm 我有这个(更新的帖子),它应该是什么? 我已经添加了自定义自定义端口转发规则的链接。 docs.microsoft.com/en-us/azure/load-balancer/… 尝试了解决方案 2,得到了一些 fabric_e_invalid_address 和超时,将尝试选项 1【参考方案2】:

转到 godaddy 或您使用的任何域提供商,然后将转移添加到您的 azure 域:https://mycluster.westeurope.cloudapp.azure.com

【讨论】:

以上是关于从自定义域使用反向代理和 SSL 访问 Service Fabric的主要内容,如果未能解决你的问题,请参考以下文章

Apache httpd 反向代理方案的 SSL 问题

无法从自定义域 HTTPS 访问 Elastic Beanstalk(单实例)

Nginx配置正向代理和反向代理,实现HTTPS通信的案例

使用和不使用 SSL 的 Apache 反向代理之间行为不同的原因

Nginx:15---反向代理之(安全隔离:SSL流量加密SSL客户端身份验证基于原始IP地址阻止流量)

无法使用 Nginx(反向代理+SSL 协商)和 Tomcat 上传大文件