reactjs - ReactJS 应用程序使用 Kubernetes Ingress 显示白屏
问题描述
我正在尝试处理入口路由以使用一个公共 IP 地址部署多个 ReactJS 应用程序。使用以下路由文件提供的 SpeedyMath 应用程序https://github.com/pankajladhar/speedy-math.git
尝试访问此应用程序,因为http://myapps.centralus.cloudapp.azure.com/speedymath显示白屏。从浏览器日志中我看到的是http://myapps.centralus.cloudapp.azure.com/static/js/bundle.js net::ERR_ABORTED 404 (Not Found)
。我注意到 index.html 被加载但错误“加载资源失败”在行<script type="text/javascript" src="/static/js/bundle.js"></script></body>
入口路由.yml:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: myapps-ingress
annotations:
nginx.org/server-snippet: "proxy_ssl_verify off;"
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /speedymath
backend:
serviceName: speedymath-service
servicePort: 80
当从“/speedymath”到“/”的路径更新路由文件时,相同的应用程序会正确加载。但这并不能帮助我根据传入的 url 构建不同的路由规则
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: myapps-ingress
annotations:
nginx.org/server-snippet: "proxy_ssl_verify off;"
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /
backend:
serviceName: speedymath-service
servicePort: 80
在这里感谢您的帮助
解决方案
我的问题通过几件事得到了解决:
正如@mk_sta 所说,路径为
path: /speedymath(/|$)(.*)
和nginx.ingress.kubernetes.io/rewrite-target: /$2
为了处理 ReactJS 应用程序的上下文问题,更新了 package.json 以包含
"homepage": "."
. 这将更新所有链接和路径以从当前目录引用。
推荐阅读
- object - 如何从 obj 文件中删除除一种颜色之外的所有颜色
- javascript - 为什么 ChartJS 的这个 Tooltip 回调有效而这无效
- html - 如何升级整个网页,使其在 4K 显示器和高清显示器中看起来一样?
- c - IOCCC 1984/decot.c - 可以在 21 世纪编译吗?
- powerbi - 在过滤器中匹配文本条件时计算总和的问题
- c# - 关于使用代码或撰写/容器设置在 docker 容器中设置 HTTP Strict-Transport-Security 的问题
- python - 使用 Keras 进行 LSTM 优化
- api - 无法评估子级更新方法未被称为 blazor
- html - CSS 背景模糊过滤器未在列数上完美呈现
- ios - Windows ios sdk 小于 mac ios sdk for xamarin