nginx - Kuberentes 入口速率限制改变重写目标基础
问题描述
我有一个仅包含一个注释的 Ingress 文件:
---
apiVersion: "extensions/v1beta1"
kind: "Ingress"
metadata:
name: "logging-microservice-ingress"
namespace: "000000001"
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
-
host: "ms-shared-nad.techmahindra.com"
http:
paths:
-
backend:
serviceName: "logging-microservice-000000001"
servicePort: 3000
path: "/logging-microservice"
当我调用https://example.com/logging-microservice/logs
后端服务生成时,
GET /logs --> 200
当我添加另外两个注释时
nginx.ingress.kubernetes.io/limit-connections: 1
nginx.ingress.kubernetes.io/limit-rps: 1
后端给
GET /logging-microservice/logs --> 404
我无权查看那里生成的实际 nginx 配置。但是,想知道应用速率限制如何改变重写基础。
我已经尝试过限速open source nginx server
,它按预期工作。从传递给上游 api 后端的 url 中删除路径可能会发生什么变化?
更新 :
我已经访问了集群并记录了发生的变化:
location ~* "^/logging-microservice" {
rewrite "(?i)/logging-microservice" / break;
}
location ~* "^/" {
}
正在更改为
location /logging-microservice {
}
location / {
}
添加速率限制注释时。
解决方案
即使你得到了 Ingress.yaml
nginx.ingress.kubernetes.io/rewrite-target: /
一切正常,你需要它
nginx.ingress.kubernetes.io/rewrite-target: "/"
另一件事是,注释的顺序很重要;
不可能:
nginx.ingress.kubernetes.io/rewrite-target: "/"
nginx.ingress.kubernetes.io/limit-connections: "1"
nginx.ingress.kubernetes.io/limit-rps: "1"
它应该是 :
nginx.ingress.kubernetes.io/limit-connections: "1"
nginx.ingress.kubernetes.io/limit-rps: "1"
nginx.ingress.kubernetes.io/rewrite-target: "/"
学会了艰难的方式!
推荐阅读
- java - Oracle 中的 CallableStatement 是如何工作的?
- javascript - 如果所有元素都具有相同的类,则隐藏特定的 div
- typescript - Typescript 无法解析 css 定位器快捷方式('$')美元符号
- heroku - 从俄罗斯访问 Heroku 应用程序会有任何问题吗?
- javascript - Bot 不向频道添加消息成员 - Discord.JS
- javascript - 如何使用 lit-element/lit-html 进行 AJAX 调用?
- pine-script - pinescript 代码的数学表示
- coordinates - 如何使用 2 个点集制作边框网格,每个点集都有自己的长度
- image - 在 FastAPI 发布请求中上传图像会导致 400 Bad Request
- keras - Julia 的 Flux 中的 Keras W_constraint 和 W_regularizer 类似物