如何解决Nginx重写目标将domain / suffix / index.php覆盖为domain / index.php
最近,我已经部署了一个运行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 docs中提到的那样,有时您需要设置$cfg['PmaAbsoluteUri']
在某些设置(如单独的SSL代理或负载平衡器)中,可能必须设置$ cfg ['PmaAbsoluteUri']才能正确重定向。
在我基于this configuration的情况下,许多情况取决于您如何配置PMA_ABSOLUTE_URI
,它是http://somedomain.com/phpmyadmin
还是不同的?
很重要,因为您可能会遇到以下情况:
- 当您输入
http://somedomain.com/phpmyadmin
并登录时,您将被重定向到http://somedomain.com/
,因此Ingress
会将您重定向到ingress设置的path: /
- 如果您再次输入
http://somedomain.com/phpmyadmin
,您将能够看到phpmyadmin
的内容,就像您已经登录一样。
您可以尝试在env
部署中添加myphpadmin
。如下图所示:
env:
- name: PMA_ABSOLUTE_URI
value: http://somedomain.com/myphpadmin/
最后,不建议在没有phpmyadmin
的情况下使用暴露https
。
有关其他信息,您可以阅读this文章。
简而言之:
- Nginx入口配置看起来不错
- 检查您的
myphpadmin
配置,尤其是PMA_ABSOLUTE_URI
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。