在 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