Kubernetes Ingress:NodeJS 应用程序显示空白页面

Kubernetes Ingress: NodeJS application shows blank page

让我描述一下我今天遇到的情况:

  1. 我从开发人员那里收到了 NodeJS 应用程序映像并将其发布到 AKS(Azure Kubernetes 服务)

此应用程序的清单中没有任何具体内容,这是在 80 端口上提供服务的简单部署。

  1. 我已经使用 helm 包配置了 Ingress,并从 helm 仓库安装了常用的一个:stable/nginx-ingress。安装时 - 我已经开始配置 Ingress。

  2. 在我的yaml下面:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: app-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - http:
      paths:
      - backend:
          serviceName: ui-service
          servicePort: 80
        path: /(.*)
      - backend:
          serviceName: ui-service
          servicePort: 80
        path: /test-service/ui(/|$)(.*)

好的,我正在尝试打开页面:http://1.2.3.4/ - 一切正常,我看到将我重定向到的网页:

http://1.2.3.4/page1 ,如果我点击了某些东西 - http://1.2.3.4/page2 等等

但是,当我尝试使用以下方式打开同一个 Web 应用程序时:

http://1.2.3.4/test-service/ui ,我在控制台中出现空白页面和错误:

Resource interpreted as Stylesheet but transferred with MIME type text/html: "http://1.2.3.4/test-services/ui/static/css/test.css".

我发现有什么不同:

在第二种情况下,所有 JS 和 CSS 文件的内容类型为:text/html.

让我描述一下我是如何设法解决这个问题的:

在YAML设置中,如你所见nginx.ingress.kubernetes.io/rewrite-target: /

因此,对于根路径目录和应用程序 - 它应该是:

nginx.ingress.kubernetes.io/rewrite-target: /

例如com/example/

应该是:

nginx.ingress.kubernetes.io/rewrite-target: /

等等

现在,网页显示正确。