nginx - kubernetes nginx 入口控制器重写
问题描述
我们在 kubernetes 上部署了一个 mockserver。目前,我们只有一个主机名,由其他几个应用程序共享(使用不同的路径)。但是,由于 css 位置,仪表板无法正常工作。解决这个问题的最佳方法是什么?
Failed to load resource: the server responded with a status of 404 (), hostname/mockserver/dashboard/static/css/main.477cab2a.chunk.css
入口清单:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
app.kubernetes.io/instance: mock-server
kubernetes.io/ingress.class: nginx-ingress-protected
nginx.ingress.kubernetes.io/rewrite-target: /$2
name: mock-server-ingress
namespace: my-namespace
spec:
rules:
- host: hostname
http:
paths:
- backend:
serviceName: mock-server-svc
servicePort: 80
path: /testing(/|$)(.*)
如果我请求资源,这很好用hostname/testing/mockserver/expectation
,重写将发送/mockserver/exepctation
到后端。
但是,如果对于 path hostname/testing/mockserver/dashboard
,它将加载hostname/mockserver/dashboard
一个不存在的 html 页面。我无法解决这个问题。我应该创建另一个带有路径的入口/mockserver
来服务css吗?
解决方案
您的重写按预期工作。但是,您可以选择一些选项:
/mockserver
为(最简单的解决方案)创建第二条规则。与捕获组一起玩:
捕获的组按时间顺序以 $1、$2 ... $n 的形式保存在编号的占位符中。这些占位符可以用作 rewrite-target 注释中的参数。
- 使用付费解决方案。
最简单的方法是选择选项 1 并创建第二条规则来满足 css 的路径。
推荐阅读
- java - 如何获取保存在本地项目目录中的json对象长度?
- php - SQL 从多个表中选择结果
- angular - ngModel 未绑定到组件参数
- django - 按天和小时分组休息 api 数据。Django 休息框架
- c# - OData - 如何查询大于或等于给定值的 DateTime
- javascript - React hooks:为什么 useEffect 需要一个详尽的依赖数组?
- react-native - 未定义的导航对象
- python - Tkinter 画布滚动条变灰
- android - 如何使用 ViewPager2 将数据从 Activity 发送到 Fragment?
- c# - 有什么方法可以在 WPF 中实现亚克力模糊效果?