0

在 Kubernetes 环境中尝试实现这一目标时,我偶然发现了这个问题。

问题,docker-style 在这里打开https://github.com/phpmyadmin/docker/issues/253
我读了。适用于纯 docker,但不是 100% 适用于 k8s。

使用 k8s,$document_root不能将其挂载在 nginx 容器内,因为它严格位于 phpmyadmin 容器(/var/www/html)内。
所以 nginx 无法为静态部分提供服务。

FPM 为 PHP 代码提供了良好的服务,没问题,我收到 200 OK
GET /index.php HTTP/1.1" 200 3600
但是所有其他资源都以 404 结束,因为它们不是由 FPM 提供的(不是他的工作),也不是由 nginx 提供的(它没有让他们在当地)。

我的问题是:
如何[nginx] -> [phpmyadmin:fpm] 在 Kubernetes 环境中实现这个用例

推论问题:
我的方法或我的 conf 有什么问题吗?

以供参考:

nginx.conf

    server {
      listen      80;
      server_name pma.exemple.com;

      location ~ /.*\.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_index index.php;
        fastcgi_pass  backend-phpmyadmin-service:9000;
        include       fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
      }
    }

部署-pma.yaml

[...]
      containers:
        - name: backend-phpmyadmin
          image: phpmyadmin/phpmyadmin:fpm-alpine
          env:
            - name: PMA_HOST
              value: backend-mariadb
            - name: PMA_PORT
              value: '3306'
            - name: PMA_ABSOLUTE_URI
              value: 'http://pma.exemple.com/'
            - name: MYSQL_ROOT_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: backend-mariadb-secret
                  key: pass

服务-pma.yaml

apiVersion: v1
kind: Service
metadata:
  name: backend-phpmyadmin-service
[...]
  ports:
  - protocol: TCP
    port: 9000
4

0 回答 0