最近我部署了一个运行wordpress实例和phpmyadmin的kubernetes集群。我使用Nginx入口控制器为这两个服务执行基于路径的路由。然而,请求/
没有任何麻烦,但当我请求domain.com/phpmyadmin/
时,我会得到一个登录页面,之后我被重定向到domain.com/index.php
而不是domain.com/phpmyadmin/index.php
。请建议我可能为此而转身。感谢大家的支持:(
我的ingress.yaml
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: ingress-nginx
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/ssl-redirect: "false"
nginx.ingress.kubernetes.io/add-base-url : "true"
nginx.ingress.kubernetes.io/rewrite-target: "/$2"
# ingress.kubernetes.io/rewrite-target: "^/phpmyadmin/"
spec:
rules:
- host: example.domain.com
http:
paths:
- path: /
backend:
serviceName: wordpress
servicePort: 80
- path: /phpmyadmin(/|$)(.*)
backend:
serviceName: phpmyadmin
servicePort: 80
我认为问题不在Nginx Ingress方面。
nginx.ingress.kubernetes.io/rewrite-target: "/$2"
...
- path: /phpmyadmin(/|$)(.*)
应该能正常工作。
然而,还有第二部分,myphpadmin
的配置。由于您没有提供此配置,我想是什么原因导致了此问题。
就像phpmyadmin文档中提到的,有时您需要设置$cfg['PmaAbsoluteUri']
在某些设置(如单独的SSL代理或负载均衡器(中,您可能必须设置$cfg['MaAbsoluteUri']才能正确重定向。
由于我基于此配置,很多取决于您如何配置PMA_ABSOLUTE_URI
,它是http://somedomain.com/phpmyadmin
还是不同的?是重要的,因为你可能会遇到这样的情况:
- 当您进入
http://somedomain.com/phpmyadmin
并登录时,您将被重定向到http://somedomain.com/
,因此Ingress
将重定向到ingress中设置的path: /
- 如果您再次输入
http://somedomain.com/phpmyadmin
,您将能够看到phpmyadmin
的内容,就像您已经登录一样
您可以尝试在myphpadmin
部署中添加env
。它看起来像下面这样:
env:
- name: PMA_ABSOLUTE_URI
value: http://somedomain.com/myphpadmin/
最后,不建议在没有https
的情况下使用暴露phpmyadmin
。
想要了解更多信息,你可以阅读这篇文章。
简而言之:
- Nginx入口配置看起来不错
- 检查您的
myphpadmin
配置,尤其是PMA_ABSOLUTE_URI