apache - Kubernetes Ingress 路径未找到资源
问题描述
我在使用指向不同 Kubernetes 服务的路径时遇到了一些问题。
我使用路径/secondary-app指向辅助服务,我可以通过我的日志看到我正确地访问了该服务。
我的问题是网站上包含的任何资源,例如/css/main.css,最终找不到导致 404。
这是我的 ingress 的精简版:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
kubernetes.io/tls-acme: "true"
nginx.ingress.kubernetes.io/proxy-body-size: 50m
nginx.ingress.kubernetes.io/rewrite-target: /
name: my-app
spec:
rules:
- host: my-app.example.com
http:
paths:
- backend:
path: /
serviceName: my-app
servicePort: http
- backend:
path: /secondary-app
serviceName: secondary-app
servicePort: http
我已经尝试了一些东西,但还不能让它工作。我可能需要做一些 apache 重写吗?
任何帮助,将不胜感激。
编辑 - 解决方案
感谢@mk_sta 的一些帮助,我能够通过使用如下nginx.ingress.kubernetes.io/configuration-snippet
注释让我的辅助服务应用程序正常工作:
nginx.ingress.kubernetes.io/configuration-snippet: |
if ($request_uri = '/?%secondary-app') { rewrite /(.*) secondary-app/$1 break; }
它仍然需要对我的特定应用程序进行一些调整,但这正是我所需要的。
解决方案
我猜nginx.ingress.kubernetes.io/rewrite-target: /
您的配置中的注释Ingress
不会为多路径重写目标路径带来任何成功,请在此处阅读更多内容。但是,您可以考虑使用Nginx Plus Ingress 控制器,它附带nginx.org/rewrites:
注释,可用于将 URI 路径指向多个服务,如本示例中所述。
您还可以考虑为现有的使用nginx.ingress.kubernetes.io/configuration-snippet
注解Ingress
,它可以将重写规则调整为 Nginx 位置,例如:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
kubernetes.io/tls-acme: "true"
nginx.ingress.kubernetes.io/proxy-body-size: 50m
nginx.ingress.kubernetes.io/configuration-snippet: |
rewrite /first-app/(.*) $1 break;
rewrite /secondary-app/(.*) /$1 break;
name: my-app
spec:
rules:
- host: my-app.example.com
http:
paths:
- backend:
path: /first-app
serviceName: my-app
servicePort: http
- backend:
path: /secondary-app
serviceName: secondary-app
servicePort: http
推荐阅读
- javascript - 将单个参数传递给需要 javascript 中的多个参数的函数
- php - 如何使用表单帖子中的变量创建日期?
- python - 为什么我的 json.dumps 返回字符串而不是数组?
- omnet++ - 如何在 OMNET++ 中创建自己的标题结构
- php - .env 文件不会将变量加载到 config.php - 学生设置第一个 php 开发环境
- java - 按下连接到片段的按钮后如何访问活动?
- reactjs - 从 axios 导入 axios - 解析错误:意外的令牌
- excel - 是否有一个 Excel 公式在活动数据字符串中的 WHAT POINT 返回,数据更改形式(从 1 到 2)?
- python - Python cv2.VideoWriter() 从 numpy 数组写入 .avi 时会产生失真的视频
- python - 每个线程一个 aiohttp ClientSession?