gpt4 book ai didi

kubernetes - Kubernetes入口路由到Nextjs应用程序的问题

转载 作者:行者123 更新时间:2023-12-02 12:06:53 25 4
gpt4 key购买 nike

所以我有一个有趣的用例。我正在Kubernetes集群上运行多个微服务。我的应用程序使用NextJS进行内部调用_next路由。

我的问题来自这样一个事实,即我需要一种区分服务及其对_next文件的请求的方法。因此,我实现了NextJS的assetPrefix功能,该功能在开发中非常有效,在_next前面添加了我的前缀,因此请求看起来像.../${PREFIX}/_next/...。这样,我可以设置一个入口并将基于前缀的文件路由到群集上适当的服务。我遵循此指南设置了Kubernetes Ingress Controller :https://akomljen.com/kubernetes-nginx-ingress-controller/

我的入口配置是:

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

所以这就是问题所在。现在一切都已设置,正确部署,并且入口正在按照上述指南并使用上述规则运行,我的服务正在尝试向 .../_next/...而不是 .../${PREFIX}/_next/...发出请求,以便它们找不到正确的文件,并且没有任何工作。我似乎无法弄清楚发生了什么。谁有想法?提前致谢!

最佳答案

您正在使用内置的NGINX Ingress Controller ,不幸的是,它没有此类功能。

我的建议是,如果可以的话,请使用NGINX Plus Ingress Controller批注功能。

您可以找到official example here

例:

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/)。
/tea/  ->  /
/tea/abc -> /abc

以下是如何重写对 coffee-svc的请求的URI的示例(请注意, /coffee请求被重定向到 /coffee/)。
/coffee/  ->  /beans/
/coffee/abc -> /beans/abc

关于kubernetes - Kubernetes入口路由到Nextjs应用程序的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51411662/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com