node.js - 另一个 nginx 入口重写目标问题
问题描述
我有一个服务和一个带有 kubenetes nginx 入口控制器的入口资源。我希望/student
我的 url 路径转到应用程序的根目录并匹配student
.
例如:http ://example.com/student/ver应该与/ver
我的应用程序的路由匹配。
但是,我的入口总是以/student
url 路径作为其他 url 段前缀的应用程序。如果我调用http://example.com/student/ver,我的应用程序会被相同的 url ( ) 命中student/ver
。
我的入口:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
ingress.kubernetes.io/rewrite-target: /
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/ssl-redirect: "false"
name: ingress-resource
spec:
rules:
- host: example.com
http:
paths:
- backend:
serviceName: lesson-streaming
servicePort: 80
path: /student
我花了几天时间,但一次没有成功。
编辑:
入口更改为以下 - 不是我的要求说http 404
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
ingress.kubernetes.io/rewrite-target: /$2
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/ssl-redirect: "false"
name: ingress-resource
namespace: default
spec:
rules:
- host: example.com
http:
paths:
- backend:
serviceName: lesson-streaming
servicePort: 80
path: /student(/|$)(.*)
解决方案
您可以按照链接正确使用rewrite-target
注释并保留正确的键nginx.ingress.kubernetes.io/rewrite-target
。
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$2
name: rewrite
namespace: default
spec:
rules:
- host: rewrite.bar.com
http:
paths:
- backend:
serviceName: http-svc
servicePort: 80
path: /something(/|$)(.*)
推荐阅读
- python - Spotify Web API - 错误 400,在创建播放列表时没有正文
- django - 在 django ORM 查询中注释期间获取长名称
- cmd - 如何在cmd中删除以“ - Copy”结尾的重复文件
- android - 在不裁剪或缩放的情况下调整壁纸大小以适应屏幕?
- playframework - 如何用ebean映射枚举?
- python - 基于熊猫数据框中指定列的分组
- javascript - 在javascript中发送多个数据
- spring - 方法签名无法解析 Java 中的 kotlin
- reactjs - 图像在反应应用程序中旋转
- arrays - 使用一组记录优化工作