- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在使用 minikube ingress 时,我必须写 nginx.ingress.kubernetes.io/rewrite-target: /$1
.我一直在努力理解为什么我们需要这个注释以及如何使用它。
我知道doc说如下:
In some scenarios the exposed URL in the backend service differs from the specified path in the Ingress rule. Without a rewrite any request will return 404. Set the annotation nginx.ingress.kubernetes.io/rewrite-target to the path expected by the service.
the exposed URL in the backend service differs from the specified path in the Ingress rule
方法。我无法清楚地理解这个想法。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
namespace: example-namespace
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
rules:
- host: myexample.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: example-service
port:
number: 80
代码2:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
namespace: example-namespace
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: myexample.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: example-service
port:
number: 80
代码3:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
namespace: example-namespace
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
rules:
- host: myexample.com
http:
paths:
- path: /index
pathType: Prefix
backend:
service:
name: example-service
port:
number: 80
关于上面提到的重写目标和路径,上述 3 个代码片段的每一对之间究竟有什么区别?
最佳答案
我不知道情况是否会随着 Ingress 资源的新版本或 Nginx Ingress Controller 的新版本而改变,但我认为这就是它的工作原理。
假设我想在同一个域下使用 Ingress 为 2 个不同的 Web 应用程序提供服务。
/
下的请求/
下的请求/
myexample.com/aaa/
下为 App A 提供服务myexample.com/bbb/
下为 App B 提供服务apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
namespace: example-namespace
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
rules:
- host: myexample.com
http:
paths:
- path: /aaa(/|$)(.*)
pathType: Prefix
backend:
service:
name: app-a
port:
number: 80
- path: /bbb(/|$)(.*)
pathType: Prefix
backend:
service:
name: app-b
port:
number: 80
请注意 ,虽然这在 Rest API 和类似的东西上工作得很好,但它在网页上可能不太好用,因为网页可能会尝试在不同的路径加载资源(例如,如果它不使用相对路径)。这就是为什么(通常)前端应用程序需要知道它们在域下的哪条路径上提供服务。
path
开始和
pathType
相互作用。通过路径,我可以定义在哪里为我的服务提供服务。取决于
pathType
,它可能只是一个
Prefix
在整个路径中,
Exact
路径,或者它可以取决于入口 Controller (又名
ImplementationSpecific
)。文档中的所有内容都用一长串示例很好地解释了 (
https://kubernetes.io/docs/concepts/services-networking/ingress/#examples )
rewrite-target
发挥作用。
rewrite-target
在与预期路径不同的路径下为应用程序提供服务,根据需要编写 url。我还可以使用正则表达式和捕获组(这就是
$1
、
$2
等等)
path: /bbb(/|$)(.*)
我的意思是这个路径将匹配/bbb 下的所有内容,在 bbb 之后有或没有/。如果我再写
rewrite-target: /$2
我的意思是请求将被重写以替代
/bbb
与
/
然后取第二个捕获组(这意味着第二个正则表达式,
(.*)
)
关于nginx - nginx.ingress.kubernetes.io/rewrite-target :/$1 mean in minikube annotation? 到底是做什么的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67031162/
我的问题是 this one. 的一个分支 我有一个要验证的注释(比如电话注释)。我可以使用@phone 验证器来检查电话对象是否有效。我还希望能够将此验证器放在包含电话的联系信息对象上。有没有一种方
我的问题是 this one. 的一个分支 我有一个要验证的注释(比如电话注释)。我可以使用@phone 验证器来检查电话对象是否有效。我还希望能够将此验证器放在包含电话的联系信息对象上。有没有一种方
例如 class LoggingService [Inject] (protected val logger: Logger) class LoggingService @Inject (protec
你觉得你是java高手吗? 您是否深谙反射 API 的 secret ? public @interface @a {} public @interface @b {} @Mark public @i
我对 Spring 和 JUnit 非常陌生。我正在尝试为 spring 服务类运行一个简单的 JUnit 测试用例,但它失败了,我得到了这个异常。我还没有编写任何测试,但在实现之前尝试运行。使用to
对于spring和JUnit来说是非常新的东西。 我正在尝试为spring服务类运行一个简单的JUnit测试用例,但是失败了,并且出现了这个异常。我还没有编写任何测试,但是尝试在实现之前进行测试。 使
我有一个实体Test,它将从特征中获取它的属性(和基本方法): class Test { use Trait_title; } trait Trait_title{ /** *
我(当然)正在尝试使用许多我不太了解的构造来维护一个项目。在尝试弄清楚 Spring 中 AOP 使用的过程中,我遇到了带有以下注释的方法: @Around(value = "@annotation(
目前我正在编写一个注释处理器,它将生成新的源代码。该处理器与应用程序本身隔离,因为它是构建项目的一个步骤,我将整个构建系统与应用程序分开。 这就是问题开始的地方,因为我想处理在应用程序中创建的注释。我
我将 Vertx Service Gen 注释处理器与 Kotlin kapt 结合使用。 在注释处理器启动之前,我的 kapt 失败,到处都是以下异常消息: error: scoping const
我很难弄清楚如何从其实际实现类中获取对 java.lang.annotation.Annotation 的引用。 注释本身看起来像这样(来自框架): @Target({ElementType.TYPE
如何创建类似的注释 @Table(name="batch", uniqueConstraints= @UniqueConstraint(columnNames = {"compound_id"
我刚开始使用Spring Boot,我收到这个错误已经有一段时间了,不幸的是无法修复它。从那时起,我一直在谷歌上搜索,但仍然找不到我做错了什么。在我的代码下面找到:。实体。刀。主要。误差率。启动App
输出文本: Execution failed for task ':app:checkDebugDuplicateClasses'. 1 exception was raised by worker
假设我想使用宏注释来复制@specialized(Int) 之类的注释——我知道这很疯狂。像这样的东西: class expand(expanded: Any*) extends Annotation
假设我想使用宏注释来复制@specialized(Int) 之类的注释——我知道这很疯狂。像这样的东西: class expand(expanded: Any*) extends Annotation
注解处理过程中我目前正在处理一个方法的注解: @Override public boolean process(Set elements, RoundEnvironment env) { Mess
我有接口(interface)资源和几个实现它的类,例如音频、视频...此外,我创建了自定义注释MyAnnotation: @MyAnnotation(type = Audio.class) cl
我的项目包括较旧的未注释 Controller 和较新的基于注释的 Controller 。 我使用的是最新的 Spring jar (3.0.5),在我的 dispatcher-servlet.xm
我正在写一些简单的 win32 东西,我正在使用以下 wWinMain int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance
我是一名优秀的程序员,十分优秀!