【发布时间】:2020-09-22 23:13:55
【问题描述】:
我有一个云服务器 ubuntu 18.04,我有一个后端 API (.NET Core) 和一个前端 Angular 应用程序(这两个应用程序都已部署在码头集装箱内)。后端 API 首先上传,所以我在 云服务器 上配置了一个 nginx 代理。然后当我对 Angular 应用程序进行 docker 化时,但所有示例都使用 nginx 进行了 docker 化。它是否可以在没有 nginx 的情况下独立 dockerize Angular 应用程序?
因此,现在云服务器有两个 nginx 反向代理。一个在服务器上,一个在 Angular 容器内 @@
我的想法
- 如果我向外界公开 IP 地址,所有请求都将直接转发到 Angular 容器 IP。
- 如果我不公开 Angular 容器的 IP(设置防火墙)。一个请求必须通过 2 个 nginx 代理(因为 Angular 应用程序现在与 nginx 一起部署)。如何在没有 nginx 的情况下对 Angular 应用进行 dockerize?
- 我应该为后端和前端部署 nginx 以及容器吗?
- 一个云服务器应该是一个应用程序的一个nginx。然后我拆分了两个后端和前端,每个部署单独的云服务器。
【问题讨论】:
-
如果你想对你的 Angular 应用进行 docker 化,你需要一个 web 服务器来托管编译后的文件(比如 nginx、nodejs、apache 或 webpack)。在开发过程中,您可能使用了内置的 webpack 服务器,并且该服务器不推荐用于生产,也不安全。首先,您需要决定使用哪个服务器来托管输出分发文件,然后您需要为它设置一个 docker 服务,并使用 Angular 构建的输出。
-
因为必须托管 Angular 应用程序,所以我在 nginx 上对 Angular 进行了 dockerize。但是有一个问题我很困惑,我已经在云服务器上配置了 nginx。所以我应该直接将请求转发到角度容器和后端容器也使用 nginx 进行 dockerize (云服务器将不再有 nginx 代理)。我说的对吗?
-
您可以将 Angular nginx 配置为反向代理到您的后端,然后您就不需要为后端使用第二个 nginx。或者,您可以将构建输出放在 docker 卷中,并将其连接到后端 nginx 容器以进行托管。
-
感谢@MrDick47,我将尝试构建 Angular 应用到 docker 卷,并使用 Cloud Server 上的 nginx 连接为前端提供编译文件。
标签: angular docker asp.net-core nginx