在我的项目中,我使用 Django 和 nginx,但我想通过 phpmyadmin 来管理我的云数据库。
Django 运行良好,但我无法对 phpmyadmin 执行相同操作,因为它在 localhost:8080 的 apache 中运行,而我希望它在 localhost/phpmyadmin 的 nginx 中运行。
这是 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 容器的反向代理工作。
如果缺少一些重要信息,请告诉我。
答案1
您没有指定您遇到的不良影响,但也许 phpMyAdmin 需要主机标头来将请求路由到PMA_HOST
。
您可以尝试在代理配置中传递主机头:
location / {
proxy_pass http://localhost:8080/;
proxy_buffering off;
proxy_set_header Host $host;
}
忠告: PhpMyAdmin 并不以其安全性而闻名,如果您查看 Web 服务器日志,您会看到有人不断尝试定位 phpMyadmin 安装并检查其中是否存在各种漏洞。
我认为 phpMyadmin 是一种开发级服务,不应在生产服务器中使用。使用例如 MySQL Workbench 或任何其他合适的 SQL 客户端通过主机通过 SSH 隧道连接到 SQL 服务器更为安全。