kubernetes-ingress - ALB 入口路径模式和重写
问题描述
错误:
当我们/*
在 vue web 应用程序的入口路径中使用时,子路径显示为404
. 但是根路径工作正常。
重现步骤:
我们有这个入口:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-app-ingress
namespace: dev-env
annotations:
alb.ingress.kubernetes.io/scheme: internet-facing
external-dns.alpha.kubernetes.io/hostname: myhostname.com
kubernetes.io/ingress.class: alb
alb.ingress.kubernetes.io/certificate-arn: ---our certificate arn---
spec:
rules:
- http:
paths:
- backend:
service:
name: my-web-app
port:
number: 30001
path: /*
pathType: Prefix
预期结果:
当我访问https://myhostname.com/login或https://myhostname.com/clients 它应该将我重定向到特定页面。(但现在它显示 404。但是,如果我访问https://myhostname.com没有问题)
环境
AWS 负载均衡器控制器版本 v1.1.9
Kubernetes 版本:EKS。v1.19.6-eks-49a6c0
附加上下文:
它是一个单页应用程序(vue)。当我们从应用程序的导航栏访问子路径时,没有问题。只有当我们尝试直接访问子路径或刷新非根页面时才会出现问题。我假设像我们在 nginx-controller 中所做的那样,使用 ALB 入口进行重写是不可能的。在这种情况下,解决方案可能是什么?
解决方案
推荐阅读
- python - 如何编写一个以文件夹名称为参数并使用 python 和 os 模块返回所有文件名列表的函数?
- while-loop - 代码在尝试“while (!radio.available())”并反复检查按钮输入时挂起
- node.js - 使用 Kubernetes 和自动缩放创建 NodeJS 数据处理应用程序
- javascript - 防止javascript灯箱在显示之前将src调整为data-src
- java - 将 kafka-streams 与自定义分区器一起使用
- php - “Vue 警告:无法挂载组件:未定义模板或渲染函数”仅在来自文件的组件上
- android - 如果并不总是需要变量,使用 lambda 会更好吗?
- javascript - 在Javascript中如何检查一个类之前是否加载过?
- amazon-web-services - 为 AWS IoT S3 规则使用 MQTT 消息的有效负载中的键值
- python-3.x - 熊猫将函数应用于列然后获取属性