首页 > 解决方案 > Nginx 路由忽略路径规则之后的任何内容

问题描述

我们正在使用 kubernetes 为 formio 设置 nginx。我们需要 .com/ 指向 api 服务器,而 .com/files/ 指向 pdf 服务器。这是入口配置:

  paths:
  - backend:
      serviceName: formio
      servicePort: 80
    path: /
  - backend:
      serviceName: formio-files
      servicePort: 4005
    path: /files/(.*)$

我们设置了我们的 PDF 存储在 /files/pdf/filename 之类的路径中。问题是 /files/ 之后的整个路径也被重定向到 PDF 服务器,而不是仅仅停在 /files/

标签: azurenginxkuberneteskubernetes-ingressnginx-ingress

解决方案


这是一个常见问题,它是由您设置的路径正则表达式引起的。首先,您需要清楚地了解它。路径正则表达式/files/(.*)$将匹配所有路径/files/...,无论您在之后添加什么/files/。所以它用 path 重定向所有请求/files/...。如果您只想将 PDF 请求重定向到路径/files/pdf/...,解决方案是将路径正则表达式设置为/files/pdf/(.*)$.


推荐阅读