You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

K8s Ingress配置问题:登录phpMyAdmin后路径跳转到根目录如何解决?

解决phpMyAdmin通过Ingress访问登录后跳转到根目录的问题

当前问题的核心是:phpMyAdmin不知道自己运行在/phpadmin子路径下,登录后会生成根路径的跳转链接;同时原有Ingress的规则和rewrite配置没有正确处理子路径的请求转发,导致跳转后无法回到phpMyAdmin页面。以下是具体解决步骤:

步骤1:调整Ingress配置

合并分散的http规则,修改路径匹配逻辑和rewrite配置,同时通过Nginx注解传递子路径信息给phpMyAdmin。修改后的Ingress清单如下:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-phpadmin
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$2
    # 传递子路径标识给phpMyAdmin
    nginx.ingress.kubernetes.io/configuration-snippet: |
      proxy_set_header X-Script-Name /phpadmin;
spec:
  ingressClassName: nginx
  rules:
    - http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: apache-php
                port:
                  number: 80
          - path: /phpadmin(/|$)(.*)
            pathType: ImplementationSpecific
            backend:
              service:
                name: phpadmin
                port:
                  number: 80

配置说明:

  • path: /phpadmin(/|$)(.*):用正则匹配所有以/phpadmin开头的请求,包括/phpadmin本身和后续子路径(如/phpadmin/index.php)
  • rewrite-target: /$2:将/phpadmin之后的路径片段转发给后端服务,保证phpMyAdmin能正确处理内部路由
  • proxy_set_header X-Script-Name /phpadmin:通过HTTP头部告诉phpMyAdmin它的访问前缀,让页面生成的链接自动带上/phpadmin

步骤2:配置phpMyAdmin的基础路径

在phpMyAdmin的Deployment中添加官方环境变量,强制指定它的绝对访问路径(替换为你的实际域名),确保所有跳转和链接都使用子路径前缀。示例Deployment片段:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: phpadmin
spec:
  replicas: 1
  selector:
    matchLabels:
      app: phpadmin
  template:
    metadata:
      labels:
        app: phpadmin
    spec:
      containers:
        - name: phpadmin
          image: phpmyadmin/phpmyadmin
          env:
            - name: PMA_ABSOLUTE_URI
              value: "http://your-domain.com/phpadmin/"
            # 保留原有PMA_HOST等数据库连接配置
          ports:
            - containerPort: 80

配置说明:

PMA_ABSOLUTE_URI是phpMyAdmin官方提供的环境变量,用来定义服务的完整访问路径,页面内的所有跳转、资源引用都会自动带上/phpadmin前缀,从根源避免登录后跳转到根目录的问题。

验证修改

  1. 应用更新后的Ingress配置:kubectl apply -f your-ingress-file.yaml
  2. 应用更新后的phpMyAdmin Deployment:kubectl apply -f your-phpadmin-deployment.yaml
  3. 重新访问http://your-domain/phpadmin,登录后检查页面跳转和链接是否都保持在/phpadmin路径下

内容的提问来源于stack exchange,提问作者Audrey_copper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 11:52:51