nginx - kubernetes nginx入口重写目标不起作用
问题描述
我正在关注来自https://kubernetes.github.io/ingress-nginx/examples/rewrite/的重写目标指南。但它不像我预期的那样工作
这是我的入口。
kind: Ingress
metadata:
name: ingress-resource
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /$2
nginx.ingress.kubernetes.io/enable-rewrite-log: "true"
spec:
rules:
- host: "test.gamedrive.cc"
http:
paths:
- path: /player-gateway(/|$)(.*)
pathType: Prefix
backend:
service:
name: player-gateway
port:
number: 80
如果向/player-gateway/health/startup发出请求, 则应将其重写为/health/startup。
但是从 Nginx 重写的数据是data:"/"并得到 404 错误代码。这是来自 Nginx 的日志
2021/11/07 06:58:03 [通知] 312#312: 26100 "(?i)/player-gateway(/|$)(. )" 匹配 "/player-gateway/health/startup",客户端: 113.53.150.16,服务器:test.gamedrive.cc,请求:“GET /player-gateway/health/startup HTTP/1.1”,主机:“test.gamedrive.cc”2021/11/07 06:58:03 [通知] 312#312: *26100 重写数据:“/”,args:“”,客户端:113.53.150.16,服务器:test.gamedrive.cc,请求:“GET /player-gateway/health/startup HTTP/1.1”,主机:“test.gamedrive.cc”113.53.150.16 - - [07/Nov/2021:06:58:03 +0000]“GET /player-gateway/health/startup HTTP/1.1”404 139“-”“PostmanRuntime /7.28.4" 258 0.001 [default-player-gateway-80] [] 10.244.0.109:80 139 0.000 404 e834c8338f2938ffc84db4e7e4053706
我尝试通过更改nginx.ingress.kubernetes.io/rewrite-target: /$2
为进行调试nginx.ingress.kubernetes.io/rewrite-target: /health/startup
。
并且响应代码是预期的 200
2021/11/07 07:04:32 [通知] 452#452: 29805 "(?i)/player-gateway(/|$)(. )" 匹配 "/player-gateway/health/startup",客户端: 113.53.150.16,服务器:test.gamedrive.cc,请求:“GET /player-gateway/health/startup HTTP/1.1”,主机:“test.gamedrive.cc” 2021/11/07 07:04:32 [通知] 452#452: *29805 重写数据:“/health/startup”,args:“”,客户端:113.53.150.16,服务器:test.gamedrive.cc,请求:“GET /player-gateway/health/startup HTTP/ 1.1",主机:"test.gamedrive.cc" 113.53.150.16 - - [07/Nov/2021:07:04:32 +0000] "GET /player-gateway/health/startup HTTP/1.1" 200 2 "- ““邮递员运行时/7.28.4”258 0.002 [default-player-gateway-80] [] 10.244.0.109:80 2 0.000 200 66967d6ab87d542f3269860107a4b7c4
似乎 /$2 或 (/|$)(.*) 不起作用。
请帮我解决这个问题。谢谢。
解决方案
推荐阅读
- c# - 如何从系列列表中选择项目直到中断
- r - 如何创建包含 local_mock() 的函数?
- angular - “formDirective”被定义为“ControlContainer”类中的访问器,但在“ConnectArrayDirective”中作为实例属性被覆盖
- excel - 删除值 < 500 和舍入值 > 500 VB.net 的行?
- oracle - 如何将 CLOB 类型的参数传递给具有 100k+ 长度字符串的 Oracle 存储过程?
- python - 我们什么时候应该在我们的正则表达式中使用组?这里真正的优势是什么?
- winforms - C# Panel AutoScroll down using chromium
- swiftui - 如何获取在 TabView 中选择了哪个视图的值?
- sql - 使用 BigQuery 访问 Google Analytics 自定义维度
- excel - 连接特定列的字符串 (VBA)