所以我有一个有趣的用例 . 我在Kubernetes集群上运行多个微服务 . 我的应用程序使用NextJS,它对_next路由进行内部调用 .
我的问题来自于我需要一种方法来区分服务及其对_next文件的请求 . 所以我实现了NextJS的assetPrefix功能,它在开发中完美运行,在_next前面附加我的前缀,所以请求看起来像 .../${PREFIX}/_next/...
. 这样我就可以根据前缀为我的集群上的相应服务设置入口和路由文件 . 我按照本指南设置了Kubernetes Ingress控制器: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/...
发出请求,因此他们无法找到正确的文件而且没有任何工作正常 . 我似乎无法弄清楚发生了什么 . 有人有主意吗?提前致谢!
1 回答
你正在使用内置的NGINX Ingress Controller,遗憾的是,它没有这样的功能 .
我的建议是使用NGINX Plus Ingress Controller注释功能,如果你能负担得起的话 .
你可以找到official example here .
例:
下面是如何重写对
tea-svc
的请求的URI的示例(请注意/tea
请求被重定向到/tea/
) .下面是如何重写对
coffee-svc
的请求的URI的示例(请注意/coffee
请求被重定向到/coffee/
) .