En mi proyecto, estoy usando Django y nginx, pero quiero administrar mis bases de datos en la nube a través de phpmyadmin.
Django funciona bien pero no puedo hacer lo mismo con phpmyadmin porque se ejecuta en apache en localhost:8080, cuando quiero que se ejecute en nginx en localhost/phpmyadmin.
aquí está el 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
y 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/;
}
}
Espero que alguien pueda decirme cómo hacer que nginx funcione como proxy inverso para el contenedor acoplable phpMyAdmin.
Si falta alguna información importante, hágamelo saber.
Respuesta1
No especifica cuál es el efecto negativo que está experimentando, pero quizás phpMyAdmin espera que un encabezado de host enrute las solicitudes a PMA_HOST
.
Podrías intentar pasar el encabezado del host en tu configuración de proxy:
location / {
proxy_pass http://localhost:8080/;
proxy_buffering off;
proxy_set_header Host $host;
}
Un consejo: PhpMyAdmin no es conocido por su seguridad y si observa los registros de su servidor web, verá un intento constante de ubicar la instalación de phpMyadmin y verificar si hay varias vulnerabilidades en ella.
En mi opinión, phpMyadmin es un servicio de nivel de desarrollo y no debería estar en un servidor de producción. Es mucho más seguro hacer un túnel ssh a través de su host hasta su servidor SQL utilizando, por ejemplo, MySQL Workbench o cualquier otro cliente SQL adecuado.