首页 > 解决方案 > 如何配置 DotNet Core 3.0 应用程序以接收来自 NGINX 和 Docker 的 HTTPS 请求

问题描述

我在设置应用程序时遇到问题。我将 Docker 用于所有容器。我有一个容器接收来自运行 NGINX 代理服务器的主机的请求。我使用 NGINX 作为我的边缘服务器,它处理 HTTP -> HTTPS 切换和证书管理(如果重要,我使用通配符证书)。然后它在位置“/”处点击主应用程序。主应用程序位于一个单独的容器中,并运行 DotNet Core 3.0。它们都在同一个 docker 网络上。我的问题是以安全的方式连接 2。我首先尝试使用相同的证书配置 Kestrel,但出现了问题,可能是文档错误。我决定放弃它并在没有 Kestrel 的情况下尝试它,因为 NGINX 在技术上是边缘服务器,但我遇到了来自 NGINX 的 HTTPS 问题并被应用程序拒绝,诸如不安全的连接或找不到证书之类的事情。我找到的所有信息都有我需要的点点滴滴,我觉得我缺少一小部分来完成这项工作。配置应用程序和代理之间的安全连接的正确方法是什么?如何获取静态 IP/端口以便可以连接它们?

标签: dockernginxhttpsconfiguration.net-core-3.0

解决方案


在阅读了更多文档之后,看起来我原来的方法是最好的方法。请参阅https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-3.0#configuration。建议使用 Kestrel 运行

由于我在反向代理后面运行应用程序,跨不同的 IP 地址,这成为同一域上的跨源情况。因此解决方案是将 Kestrel 配置为使用边缘服务器使用的通配符证书使用 HTTPS。这应该实现最佳实践,从客户端到应用程序的端到端加密。


推荐阅读