Kubernetes入口路由到Nextjs应用程序的问题
所以我有一个有趣的用例。我在Kubernetes群集上运行多个微服务。我的应用程序使用NextJS,它对下一个路由进行内部调用 我的问题来自这样一个事实:我需要一种方法来区分服务和它们对下一个文件的请求。因此,我实现了NextJS的assetPrefix功能,该功能在开发中非常有效,将我的前缀添加到_next前面,使请求看起来像Kubernetes入口路由到Nextjs应用程序的问题,kubernetes,next.js,kubernetes-ingress,Kubernetes,Next.js,Kubernetes Ingress,所以我有一个有趣的用例。我在Kubernetes群集上运行多个微服务。我的应用程序使用NextJS,它对下一个路由进行内部调用 我的问题来自这样一个事实:我需要一种方法来区分服务和它们对下一个文件的请求。因此,我实现了NextJS的assetPrefix功能,该功能在开发中非常有效,将我的前缀添加到_next前面,使请求看起来像../${prefix}/_next/…。这样,我就可以设置入口并根据前缀将文件路由到集群上的相应服务。我按照本指南设置了Kubernetes入口控制器: 我的入口配置是
../${prefix}/_next/…
。这样,我就可以设置入口并根据前缀将文件路由到集群上的相应服务。我按照本指南设置了Kubernetes入口控制器:
我的入口配置是:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: dev-ingress
spec:
rules:
- host: baseurl.com
http:
paths:
- path: /auth
backend:
serviceName: auth-svc
servicePort: 80
- path: /static/auth
backend:
serviceName: auth-svc
servicePort: 80
- path: /login
backend:
serviceName: auth-svc
servicePort: 80
- path: /settings
backend:
serviceName: auth-svc
servicePort: 80
- path: /artwork
backend:
serviceName: artwork-svc
servicePort: 80
- path: /static/artwork
backend:
serviceName: artwork-svc
servicePort: 80
这就是问题所在。现在,一切都已设置好,正确部署,入口正在按照上述指南和使用上述规则运行,我的服务正在尝试向
../../../../../../../code>而不是../${PREFIX}/../../../../code>发出请求,因此它们无法找到正确的文件,并且没有任何工作。我似乎不知道发生了什么事。有人有什么想法吗?提前谢谢 您使用的是内置的NGINX入口控制器,不幸的是,它没有这样的功能
我的建议是,如果您负担得起,就使用注释功能
你可以找到
例如:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: cafe-ingress
annotations:
nginx.org/rewrites: "serviceName=tea-svc rewrite=/;serviceName=coffee-svc rewrite=/beans/"
spec:
rules:
- host: cafe.example.com
http:
paths:
- path: /tea/
backend:
serviceName: tea-svc
servicePort: 80
- path: /coffee/
backend:
serviceName: coffee-svc
servicePort: 80
下面是如何重写到/tea svc
的请求的URI的示例(请注意,/tea
请求被重定向到/tea/
)
下面是如何重写/coffee svc
请求的URI的示例(请注意,/coffee
请求被重定向到/coffee/
)
隐马尔可夫模型。。有趣。我仍然不明白为什么../${PREFIX}/\u next/..
请求被请求为。/\u next/..
。如果我的应用程序向前缀注释发出了这些请求,那么为什么/在哪里重新编写它呢?同时进行更多的读取,看起来在没有plus的情况下可以进行重写。我用那种方法找到了工作的路线。但是,我的/静态路由仍然有问题。它似乎在某个地方重写请求?
/tea/ -> /
/tea/abc -> /abc
/coffee/ -> /beans/
/coffee/abc -> /beans/abc