首页 > 解决方案 > Nginx 不为 Docker 映像中托管的 Angular 提供服务

问题描述

这个问题已经被问了一百万次,我们几乎尝试了所有能找到的解决方案来尝试解决它。

我们正在通过映射 80:7021 为默认位置 /usr/share/nginx/html/* 内的 Docker 映像(NGINX Alpine 映像)托管一个 Angular 应用程序。

在我们的 Linux 机器上,我们连接了一个容器来提供一堆图像,其中一个就是这个 Angular 图像。

Angular 映像是使用 --prod base-href="/v2/" 构建的,因为应该为应用程序提供服务的最终 URL 有一个 /v2/ 位置连接在 Linux 机器上的 NGINX 中。

在 Linux 机器上 NGINX 的默认配置中,我们连接了一个位置 /v2/ 和一个指向 http://localhost:7021 的 proxy_pass

同样在 Linux 机器上的 NGINX 中,我们相应地设置了 mime.types,以确保正确提供 JS/CSS。

但是,不提供 JS/CSS 文件。默认情况下,如果 NGINX 找不到文件,它会提供标准的 index.html 文件,从而导致可怕的“资源作为文本/html”错误。

我们已经尝试了所有可能的方案来解决这个问题,所以我转过来希望有人看到这种行为没有得到解决,并且可以提供除 mime.types 和 location /.css 之外的解决方案。

再次重申我们所拥有的两种情况。

1.) 一个基于 NGINX Alpine 的 Docker 镜像

此图像包含--prod --base-href="/v2/"我们的 Angular 应用程序的构建版本。

应用程序文件被复制到/usr/share/nginx/html/*.

2.) 主机箱

主机箱运行 Ubuntu 18.04 发行版并具有 NGINX 1.14.2 和 Docker 19.03.6。

主机箱有一个容器设置为运行一组图像,包括上面讨论的 Angular 图像。NGINX 中的主机盒在 /v2/* 处为 Angular 应用程序设置了 /location,这意味着:

https://www.awesomewebsite/v2/{angular},这就是我们使用 /v2/ 的 base-href 构建帐户的原因。

据我们所知,这是标准做法,事情应该可以正常工作。然而事实并非如此。我们已经用尽了 Google 搜索。接下来我们可以尝试什么?

标签: angularnginxubuntu-18.04

解决方案


推荐阅读