Kubernetes Nginx Ingress 删除部分 URL

2023-12-30

我正在 Kubernetes(在 AKS 上)部署一个简单的应用程序,该应用程序位于使用 Nginx 的 Ingress 后面,并使用 Nginx helm 图表进行部署。我遇到一个问题,由于某种原因,Nginx 似乎没有将完整的 URL 传递给后端服务。

例如,我的 Ingress 设置为 URLhttp://app.client.com http://app.client.com和 /app1g 的路径http://app.client.com/app1 http://app.client.com/app1工作正常。但是如果我尝试去http://app.client.com/app1/service1 http://app.client.com/app1/service1我刚刚结束于http://app.client.com/app1 http://app.client.com/app1,它似乎正在剥离路径之后的所有内容。

我的 Ingress 看起来像这样:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /
  creationTimestamp: "2019-04-03T12:44:22Z"
  generation: 1
  labels:
    chart: app-1.1
    component: app
    hostName: app.client.com
    release: app
  name: app-ingress
  namespace: default
  resourceVersion: "1789269"
  selfLink: /apis/extensions/v1beta1/namespaces/default/ingresses/app-ingress
  uid: 34bb1a1d-560e-11e9-bd46-9a03420914b9
spec:
  rules:
  - host: app.client.com
    http:
      paths:
      - backend:
          serviceName: app-service
          servicePort: 8080
        path: /app1
  tls:
  - hosts:
    - app.client.com
    secretName: app-prod
status:
  loadBalancer:
    ingress:
    - {}

如果我转发到该服务并直接点击它,它就可以工作。


所以我找到了这个问题的答案。从 Nginx v0.22.0 开始,您似乎需要使用捕获组来捕获请求 URI 中的任何子字符串。在 0.22.0 之前仅使用nginx.ingress.kubernetes.io/rewrite-target: /适用于任何子字符串。现在却没有了。我需要修改我的入口才能使用它:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /$1
  creationTimestamp: "2019-04-03T12:44:22Z"
  generation: 1
  labels:
    chart: app-1.1
    component: app
    hostName: app.client.com
    release: app
  name: app-ingress
  namespace: default
  resourceVersion: "1789269"
  selfLink: /apis/extensions/v1beta1/namespaces/default/ingresses/app-ingress
  uid: 34bb1a1d-560e-11e9-bd46-9a03420914b9
spec:
  rules:
  - host: app.client.com
    http:
      paths:
      - backend:
          serviceName: app-service
          servicePort: 8080
        path: /app1/?(.*)
  tls:
  - hosts:
    - app.client.com
    secretName: app-prod
status:
  loadBalancer:
    ingress:
    - {}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Kubernetes Nginx Ingress 删除部分 URL 的相关文章

随机推荐

  • SystemInfo - 通过 CMD 获取计算机系统模型 - 额外空格错误

    我正在尝试通过批处理文件获取计算机系统模型类型 为此我创建了这个脚本 systeminfo find System Model gt temp TEMPSYSINFO txt for F tokens 2 delims a in temp
  • 验证 Spring Web 应用程序配置的最佳实践

    我希望我的基于 Spring 的 Web 应用程序能够validate它在启动期间的配置 这意味着例如 检查是否所需文件夹存在并且可读 可写 检查是否符合要求配置键已设定且一致 检查任何其他约束这是正确运作所必需的 您如何执行这些检查和no
  • 如何从 Quart 获取事件循环

    你好 我对 Python 相当陌生 我正在尝试将 Flask 上的现有应用程序转换为 Quart https gitlab com pgjones quart https gitlab com pgjones quart 它应该构建在 as
  • 使用 SVM 进行实时面部表情分类

    我目前正在开发一个项目 我必须提取用户的面部表情 一次只能从网络摄像头提取一个用户 例如悲伤或快乐 我对面部表情进行分类的方法是 使用opencv检测图像中的人脸 使用ASM和stasm获取面部特征点 现在我正在尝试进行面部表情分类 SVM
  • LNK2019 错误 C++ 无法解析的外部符号

    我收到这些错误消息 错误1错误LNK2019 未解决 外部符号 public void thiscall ArrayIntStorage sortOwn void sortOwn ArrayIntStorage QAEXXZ 函数中引用 m
  • 莱斯的教学目的?

    目的是什么les汇编指令 为什么我们需要加载es部分and寄存器 书中给出了以下例子 les bx p Load p into ES BX mov es bx al Store away AL 为什么我们需要加载es and bx在这种情况
  • node.js 检查远程 URL 是否存在

    如何在不下拉的情况下检查 URL 是否存在 我使用以下代码 但它会下载整个文件 我只需要检查它是否存在 app get api v1 urlCheck function req res var url req query url var r
  • 如何在具有隔离范围的指令中侦听站点范围的事件

    我正在使用具有隔离范围的指令在 angularjs 中创建自定义图表小部件 这个想法是 每个小部件在收到有关如何创建自身的基本配置信息后应该能够独立存在 该小部件将通过侦听 update data 事件与应用程序的其他部分进行通信 当事件被
  • 如何在 SQLite 中插入具有唯一 ID 的重复行?

    这看起来很简单 我想在 SQLite 表中复制一行 INSERT INTO table SELECT FROM table WHERE rowId 5 如果没有显式的唯一列声明 则该语句将起作用 但声明了表的第一列rowID INTEGER
  • 使用ActionCable,多种识别方式

    我使用 ActionCable 开发 Ruby on Rails 5 1 应用程序 通过 Devise 进行用户身份验证 https rubytutorial io actioncable devise authentication 适用于
  • Intellij 调试 Docker 容器不断给我 IO 异常握手失败

    我正在尝试在 Intellij v2020 1 中设置远程调试器 但不断收到以下错误 无法打开调试器端口 localhost 5005 java io IOException 握手失败 连接过早关闭 在我的 docker compose 文
  • 是否可以在cmake中不生成ALL_BUILD项目?

    我不需要 ALL BUILD 子项目 我可以避免生成它吗 谢谢 CMake 问题 16979 正在生成 ALL BUILD 目标 https gitlab kitware com cmake cmake issues 16979 The A
  • Facebook Graph API gem

    我想在我的 Rails 应用程序中使用 Facebook 图形 API 与 FB 图形 API 一起使用的推荐 gem 是什么 Thanks 这是一个写得很好的 FB 图形支持 Ruby https github com nov fb gr
  • 在 SSRS 中复制并粘贴表 (tablix)

    我有一个包含一天数据的 tablix 我需要在底部有相同的数据 但在 3 个不同的行中 我想在底部复制主要日期表 3 次 然后为每个表使用不同的数据集 我尝试复制 tablix 并将其粘贴到Body在 tablix 下方 但出现以下错误 报
  • C#:将数组分配给另一个数组:复制还是指针交换?

    抱歉问这个问题 我一直在谷歌上搜索了一下 但似乎出现的是对克隆或复制方法的引用 而不是我的问题的实际答案C 我有两个字节数组 它们正在被两个线程访问 private byte buffer1 new byte size private by
  • 如何使用 python 读取 CSV 文件时跳过空白行

    这是我的代码 我可以打印每一行 但是当出现空白行时 它会打印 由于CSV文件格式 所以我想在出现空行时跳过 import csv import time ifile open C Users BKA4ABT Desktop Test Spe
  • 如何将输出的 Fortran 二进制 NxNxN 矩阵读入 Python

    我用 Fortran 写出了一个矩阵 如下所示 real kind kind 0 0d0 dimension 256 256 256 dense CALCULATION inquire iolength reclen dense open
  • 如何在不不断扫描的情况下检测目录或文件何时发生更改

    除了读取所有文件并将它们与以前的快照进行比较之外 有没有办法在 Windows 中的 C 中检测目录何时发生更改 如果需要的话 我不介意 PInvoke EDITFileSystemWatcher 类很棒 但有一个问题是您必须启动后台任务
  • 一对一字段 Django 管理员

    编辑为使用一对一字段 我想将建筑物的面积添加到 django modeladmin 中 表结构是 class Area models Model id models IntegerField Buildings db column id a
  • Kubernetes Nginx Ingress 删除部分 URL

    我正在 Kubernetes 在 AKS 上 部署一个简单的应用程序 该应用程序位于使用 Nginx 的 Ingress 后面 并使用 Nginx helm 图表进行部署 我遇到一个问题 由于某种原因 Nginx 似乎没有将完整的 URL