AKS环境下ingress-nginx路径末尾斜杠访问异常问题求助
解决AKS中Ingress-Nginx路径匹配末尾斜杠问题
问题核心
访问https://allure-report.com/200/正常,但https://allure-report.com/200返回空白页面,本质是应用期望路径带末尾斜杠,无斜杠请求导致静态资源(CSS/JS)加载路径错误,进而页面无法渲染。
可行解决方案
方案1:通过Nginx注解添加重定向规则
直接在Ingress配置中添加Nginx片段,将无斜杠的/200永久重定向到/200/,同时确保路径匹配规则覆盖两种情况:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: allure-report-ingress annotations: nginx.ingress.kubernetes.io/configuration-snippet: | rewrite ^/200$ /200/ permanent; spec: ingressClassName: nginx rules: - host: allure-report.com http: paths: - path: /200(/|.*) pathType: Prefix backend: service: name: allure-report-service port: number: 80
configuration-snippet中的rewrite规则会匹配精确的/200路径,强制跳转到带斜杠的版本- 路径
/200(/|.*)同时匹配/200/和/200/xxx这类子路径
方案2:结合Rewrite-Target与路径匹配
利用Ingress的rewrite注解,将无斜杠请求重写为带斜杠的格式:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: allure-report-ingress annotations: nginx.ingress.kubernetes.io/rewrite-target: /$1/ spec: ingressClassName: nginx rules: - host: allure-report.com http: paths: - path: /200(/|$)(.*) pathType: Prefix backend: service: name: allure-report-service port: number: 80
- 路径正则
/200(/|$)(.*)会捕获/200或/200/开头的请求 rewrite-target: /$1/会将请求重写为带末尾斜杠的格式,让应用能正确识别路径
方案3:调整应用路由配置
如果有权限修改应用代码,可让前端/后端路由同时兼容/200和/200/路径:
- 前端框架(如React/Vue):设置路由base路径时支持两种格式,或添加路由重定向规则
- 后端服务:在路由层将
/200请求转发到/200/处理
内容的提问来源于stack exchange,提问作者meet soni
相关产品推荐
相关产品推荐

