【发布时间】:2021-05-07 02:21:47
【问题描述】:
我有两个 React 应用,一个是供管理员使用的,另一个是供普通用户使用的。两者都具有root / 访问权限。为了使管理员能够在普通用户访问他们各自的页面时访问他们的页面,我在管理员的反应路由器中添加了一个重定向路由,它从admin 重定向到/。
然后我在我的入口中添加了两个后端如下:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: my-ingress
annotations:
kubernetes.io/ingress.class: nginx
# nginx.ingress.kubernetes.io/use-regex: "true"
# nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
paths:
- path: /
pathType: Prefix
backend:
serviceName: user-service
servicePort: 3000
- path: /admin
pathType: Exact
backend:
serviceName: admin-service
servicePort: 4000
事情是这样的,它不会加载管理页面。我不知道为什么......有没有办法用相同的根路径加载这些不同的应用程序? (两个根路径都是/)
【问题讨论】:
-
之前没用过react。但是要澄清一些事情。您添加的重定向路由,从客户端更改路由对吗?如果是这样,那就不行了。
-
没错,它重定向客户端..但理论上客户端也是我的后端。
-
您能否提供一些来自两个入口后端的请求的测试示例?还记录来自
Ingress和您的backend请求。 -
您是否尝试过将配置中的 /admin 路径移动到比 / 路径更高的位置?我从未使用过 nginx-ingress,但我多次使用 nginx 作为反向代理,通常这些配置文件中的路由是自上而下读取的。我会假设它会在路由之前查看 servicePort 但以防万一我认为您不希望在前缀路由之前处理您的确切路由。
-
您是否尝试过切换路径的顺序?最长的应该优先考虑。您是否刚刚尝试过 1 条路径并将 / 发送到管理服务?如果它不起作用,我会检查服务端口。
标签: reactjs kubernetes nginx-ingress