在 phpmyadmin 上找不到 404 - nginx docker

404 not found on phpmyadmin - nginx docker

我想 运行 phpmyadmin 和我的 API 在同一个域中使用 docker 和 nginx,如:

api => localhost:8888/ phpmyadmin => localhost:8888/phpmyadmin/

Docker phpmyadmin 服务配置:

phpmyadmin:
  image: phpmyadmin
  restart: always
  environment:
    PMA_ARBITRARY: 1
    PMA_HOST: mysql
    PMA_USER: ${DATABASE_USER}
    PMA_PASSWORD: ${DATABASE_PASSWORD}
  depends_on:
    - mysql

这是 nginx 服务配置:

nginx:
  image: nginx:stable-alpine
  volumes:
    - ./nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
  depends_on:
    - api
    - phpmyadmin
  restart: always
  ports:
    - '8888:80'

这是 nginx 配置文件:

upstream pma {
  server phpmyadmin;
}

server {
  listen 80;
  server_name localhost;
  # resolver 127.0.0.1;

  location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;

    proxy_pass http://api:8889/;
    proxy_redirect off;
  }

  location ~/phpmyadmin(.*)$ {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;

    proxy_pass http://pma//;
    proxy_redirect off;
  }
}

一切正常,我可以使用 API,因为 localhost:8888/url 而且它工作正常。但是当我请求 localhost:8888/phpmyadmin/ 时,它加载了它,但是 js 和所有 css 给出了 404 未找到,这是控制台预览:

为了解决这个问题我绞尽脑汁花了3个多小时,尽了最大的努力,但还是不行。我对 nginx 很陌生,所以任何人都可以帮助我。

您是否尝试在 docker phpmyadmin 服务环境中添加 PMA_ABSOLUTE_URI?结帐 this

PMA_ABSOLUTE_URI - the full URL to phpMyAdmin. Sometimes needed when used in a reverse-proxy configuration.

像这样添加:

PMA_ABSOLUTE_URI: localhost:8888/phpmyadmin/

请注意最后的/,非常非常重要,错过了将无法正常工作。