【问题标题】:nginx-ingress rewrite-target to /api not workingnginx-ingress rewrite-target 到 /api 不起作用
【发布时间】:2022-01-08 03:34:56
【问题描述】:

我正在尝试将 api 作为位置 (/api) 以使用 intress 设置

这是我的入口:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-dev
  annotations:
    # use the shared ingress-nginx
    kubernetes.io/ingress.class: "nginx"
    #nginx.ingress.kubernetes.io/rewrite-target: /
    #nginx.ingress.kubernetes.io/app-root: /
    
spec:
  rules:
  - host: 'dev.example.com'
    http:
      paths:
      - path: /api
        pathType: Prefix
        backend:
          service:
            name: my-ruby
            port: 3000

当我 curl dev.example.com/api/check_version 我得到错误

I, [2021-12-01T16:43:35.776502 #13]  INFO -- : [7253cca0b88503d625af527db32eb92e] Started GET "/api/check_serverr" for 10.42.1.228 at 2021-12-01 16:43:35 +0300
F, [2021-12-01T16:43:35.779603 #13] FATAL -- : [7253cca0b88503d625af527db32eb92e]
[7253cca0b88503d625af527db32eb92e] ActionController::RoutingError (No route matches [GET] "/api/check_version"):

如果我添加注释 nginx.ingress.kubernetes.io/rewrite-target: /

得到错误

I, [2021-12-01T16:49:11.153280 #13]  INFO -- : [7832de5c07e3a173ddc86ebab5735cec] Started GET "/" for 10.42.1.228 at 2021-12-01 16:49:11 +0300
F, [2021-12-01T16:49:11.154435 #13] FATAL -- : [7832de5c07e3a173ddc86ebab5735cec]
[7832de5c07e3a173ddc86ebab5735cec] ActionController::RoutingError (No route matches [GET] "/"):

这种情况下如何正确改写?

【问题讨论】:

  • 您能否澄清一下预期的传入 url 路径是什么以及需要将其重写为什么?
  • 或者更确切地说,预期的 url 路径是什么?您的应用程序希望收到什么?
  • whitout ingress 它的工作就像 kubernetes 中的 dev.example.com/check_version 我正在尝试为我的 ruby​​ dev.example.com/api url 创建路径 /api 应该如下所示:dev.example.com /api/check_version 但 rails 没有路由)
  • 这样的? path: /api(/|$)(.*)rewrite-target: /$2
  • 这样/api在请求发送到后端之前被剥离,请求/api/check_version会在到达后端之前变为/check_version

标签: nginx kubernetes kubernetes-ingress nginx-ingress


【解决方案1】:

根据 cmets,以下似乎已经解决了这个问题。

您希望在请求发送到后端之前去掉/api 部分,因此请求/api/check_version 在到达后端之前将变为/check_version

  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$2

...<omitted>...

      - path: /api(/|$)(.*)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-24
    • 1970-01-01
    • 2013-07-20
    • 2018-09-15
    • 1970-01-01
    • 1970-01-01
    • 2021-01-02
    • 2011-10-28
    相关资源
    最近更新 更多