In meinem Projekt verwende ich Django und nginx, möchte meine Cloud-Datenbanken aber über phpmyadmin verwalten.
Django funktioniert einwandfrei, aber ich kann das Gleiche nicht mit phpmyadmin machen, weil es in Apache unter localhost:8080 läuft, obwohl ich möchte, dass es in nginx unter localhost/phpmyadmin läuft.
hier ist die 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
und 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/;
}
}
Ich hoffe, dass mir jemand sagen kann, wie ich Nginx als Reverse-Proxy für den Docker-Container phpMyAdmin nutzen kann.
Sollten wichtige Informationen fehlen, lassen Sie es mich bitte wissen.
Antwort1
Sie geben nicht an, welche negativen Auswirkungen Sie feststellen, aber möglicherweise erwartet phpMyAdmin einen Host-Header, an den Anforderungen weitergeleitet werden PMA_HOST
.
Sie könnten versuchen, den Host-Header in Ihrer Proxy-Konfiguration zu übergeben:
location / {
proxy_pass http://localhost:8080/;
proxy_buffering off;
proxy_set_header Host $host;
}
Ein Rat: PhpMyAdmin ist nicht gerade für seine Sicherheit bekannt. Wenn Sie sich die Protokolle Ihres Webservers ansehen, werden Sie feststellen, dass ständig versucht wird, die phpMyAdmin-Installation zu lokalisieren und sie auf verschiedene Schwachstellen zu überprüfen.
Meiner Meinung nach ist phpMyadmin ein Dienst auf Entwicklungsebene und sollte nicht auf einem Produktionsserver laufen. Es ist viel sicherer, über Ihren Host einen SSH-Tunnel zu Ihrem SQL-Server zu erstellen, beispielsweise mit MySQL Workbench oder einem anderen geeigneten SQL-Client.
Würden Sie phpmyadmin auf einem Produktionswebserver installieren?