如何在 docker 中使用 nginx 将 phpMyAdmin 服务到 localhost/phpMyAdmin 而不是 localhost:8080
How to serve phpMyAdmin to localhost/phpMyAdmin instead of localhost:8080 using nginx in docker
在我的项目中,我正在使用 Django 和 nginx,但我想通过 phpmyadmin 管理我的云数据库。
Django 工作正常,但我不能对 phpmyadmin 做同样的事情,因为它在 localhost:8080 的 apache 中 运行,而我希望它在 运行 在 nginx 中localhost/phpmyadmin.
这里是docker-compose.yml
version: "3.9"
services:
web:
restart: always
build:
context: .
env_file:
- .env
volumes:
- ./project:/project
expose:
- 8000
nginx:
restart: always
build: ./nginx
volumes:
- ./static:/static
ports:
- 80:80
depends_on:
- web
phpmyadmin:
image: phpmyadmin/phpmyadmin:latest
restart: always
environment:
PMA_HOST: <host_address>
PMA_USER: <user>
PMA_PASSWORD: <password>
PMA_PORT: 3306
UPLOAD_LIMIT: 300M
ports:
- 8080:80
和 nginx default.conf
upstream django{
server web:8000;
}
server{
listen 80;
location / {
proxy_pass http://django;
}
location /pma/ {
proxy_pass http://localhost:8080/;
proxy_buffering off;
}
location /static/ {
alias /static/;
}
}
我希望有人能告诉我如何让 nginx 作为 phpMyAdmin docker 容器的反向代理。
如果缺少某些重要信息,请告诉我。
您可以使用主机名和内部端口(不是公开的端口)访问另一个 docker 容器。
还需要重写 url。
location ~ \/pma {
rewrite ^/pma(/.*)$ break;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://phpmyadmin;
}
我用这个 docker-compose.yml:
测试过
version: "3.9"
services:
nginx:
image: nginx:latest
volumes:
- ./templates:/etc/nginx/templates
ports:
- 80:80
phpmyadmin:
image: phpmyadmin/phpmyadmin:latest
在我的项目中,我正在使用 Django 和 nginx,但我想通过 phpmyadmin 管理我的云数据库。
Django 工作正常,但我不能对 phpmyadmin 做同样的事情,因为它在 localhost:8080 的 apache 中 运行,而我希望它在 运行 在 nginx 中localhost/phpmyadmin.
这里是docker-compose.yml
version: "3.9"
services:
web:
restart: always
build:
context: .
env_file:
- .env
volumes:
- ./project:/project
expose:
- 8000
nginx:
restart: always
build: ./nginx
volumes:
- ./static:/static
ports:
- 80:80
depends_on:
- web
phpmyadmin:
image: phpmyadmin/phpmyadmin:latest
restart: always
environment:
PMA_HOST: <host_address>
PMA_USER: <user>
PMA_PASSWORD: <password>
PMA_PORT: 3306
UPLOAD_LIMIT: 300M
ports:
- 8080:80
和 nginx default.conf
upstream django{
server web:8000;
}
server{
listen 80;
location / {
proxy_pass http://django;
}
location /pma/ {
proxy_pass http://localhost:8080/;
proxy_buffering off;
}
location /static/ {
alias /static/;
}
}
我希望有人能告诉我如何让 nginx 作为 phpMyAdmin docker 容器的反向代理。
如果缺少某些重要信息,请告诉我。
您可以使用主机名和内部端口(不是公开的端口)访问另一个 docker 容器。 还需要重写 url。
location ~ \/pma {
rewrite ^/pma(/.*)$ break;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://phpmyadmin;
}
我用这个 docker-compose.yml:
测试过version: "3.9"
services:
nginx:
image: nginx:latest
volumes:
- ./templates:/etc/nginx/templates
ports:
- 80:80
phpmyadmin:
image: phpmyadmin/phpmyadmin:latest