docker - 如何配置 DotNet Core 3.0 应用程序以接收来自 NGINX 和 Docker 的 HTTPS 请求
问题描述
我在设置应用程序时遇到问题。我将 Docker 用于所有容器。我有一个容器接收来自运行 NGINX 代理服务器的主机的请求。我使用 NGINX 作为我的边缘服务器,它处理 HTTP -> HTTPS 切换和证书管理(如果重要,我使用通配符证书)。然后它在位置“/”处点击主应用程序。主应用程序位于一个单独的容器中,并运行 DotNet Core 3.0。它们都在同一个 docker 网络上。我的问题是以安全的方式连接 2。我首先尝试使用相同的证书配置 Kestrel,但出现了问题,可能是文档错误。我决定放弃它并在没有 Kestrel 的情况下尝试它,因为 NGINX 在技术上是边缘服务器,但我遇到了来自 NGINX 的 HTTPS 问题并被应用程序拒绝,诸如不安全的连接或找不到证书之类的事情。我找到的所有信息都有我需要的点点滴滴,我觉得我缺少一小部分来完成这项工作。配置应用程序和代理之间的安全连接的正确方法是什么?如何获取静态 IP/端口以便可以连接它们?
解决方案
在阅读了更多文档之后,看起来我原来的方法是最好的方法。请参阅https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-3.0#configuration。建议使用 Kestrel 运行
由于我在反向代理后面运行应用程序,跨不同的 IP 地址,这成为同一域上的跨源情况。因此解决方案是将 Kestrel 配置为使用边缘服务器使用的通配符证书使用 HTTPS。这应该实现最佳实践,从客户端到应用程序的端到端加密。
推荐阅读
- html - 不适应容器大小的元素
- firebase - 无法从片段开始活动
- .net-core - Azure Cosmos 按范围查询日期
- python - 如何使用霍夫变换获得水平线
- java - CSS文件不会加载
- spring - 无法调用“java.sql.ResultSet.getMetaData()”,因为“resultSet”为空
- javascript - 是否可以使用 vanilla js 接收 http 请求?
- c++ - 我的程序在完成所有执行之前就中断了
- python - 实现一个没有 async/asyncio 的 Python WebSocket 监听器
- node.js - NPM 安装卡在 fetchMetadata 或 rollbackFailedOptional 或 sill IdealTree buildDeps