Kubernetes Ingress:NodeJS 应用程序显示空白页面
Kubernetes Ingress: NodeJS application shows blank page
让我描述一下我今天遇到的情况:
- 我从开发人员那里收到了 NodeJS 应用程序映像并将其发布到 AKS(Azure Kubernetes 服务)
此应用程序的清单中没有任何具体内容,这是在 80 端口上提供服务的简单部署。
我已经使用 helm 包配置了 Ingress,并从 helm 仓库安装了常用的一个:stable/nginx-ingress。安装时 - 我已经开始配置 Ingress。
在我的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: /
等等
现在,网页显示正确。
让我描述一下我今天遇到的情况:
- 我从开发人员那里收到了 NodeJS 应用程序映像并将其发布到 AKS(Azure Kubernetes 服务)
此应用程序的清单中没有任何具体内容,这是在 80 端口上提供服务的简单部署。
我已经使用 helm 包配置了 Ingress,并从 helm 仓库安装了常用的一个:stable/nginx-ingress。安装时 - 我已经开始配置 Ingress。
在我的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: /
等等
现在,网页显示正确。