Рейтинг:0

Как обслуживать phpMyAdmin на localhost/phpMyAdmin вместо localhost:8080, используя nginx в докере

флаг gb

В своем проекте я использую Django и nginx, но хочу управлять своими облачными базами данных через phpmyadmin.

Django работает нормально, но я не могу сделать то же самое с phpmyadmin, потому что он работает в apache на локальном хосте: 8080, когда я хочу, чтобы он работал в nginx на локальном хосте/phpmyadmin.

вот docker-compose.yml

версия: "3.9"
   
Сервисы:

  веб:
    перезапуск: всегда
    строить:
      контекст: .
    env_file:
      - .env
    тома:
      - ./проект:/проект
    разоблачать:
      - 8000
      
  нгинкс:
    перезапуск: всегда
    сборка: ./nginx
    тома:
      - ./статический:/статический
    порты:
      - 80:80
    зависит от:
      - сеть

  phpmyadmin:
    изображение: phpmyadmin/phpmyadmin: последний
    перезапуск: всегда
    среда:
      PMA_HOST: <адрес_хоста>
      PMA_USER: <пользователь>
      PMA_PASSWORD: <пароль>
      PMA_ПОРТ: 3306
      UPLOAD_LIMIT: 300M
    порты:
      - 8080:80

и nginx default.conf

вверх по течению джанго {
    веб-сервер: 8000;
}

сервер {
    слушать 80;
    место расположения / {
        прокси_пасс http://django;
    }

    местоположение /пма/ {               
        прокси_пароль http://localhost:8080/;                                 
        прокси_буферизация выключена;                                     
    }

    местоположение /статическое/ {
        псевдоним /статический/;
    }
}

Я надеюсь, что кто-нибудь сможет рассказать мне, как заставить nginx работать в качестве обратного прокси-сервера для док-контейнера phpMyAdmin.

Если какой-то важной информации не хватает, пожалуйста, дайте мне знать.

Рейтинг:0
флаг ru

Вы не указываете, какой негативный эффект вы испытываете, но, возможно, phpMyAdmin ожидает, что заголовок хоста будет направлять запросы на PMA_HOST.

Вы можете попробовать передать заголовок хоста в конфигурации прокси:

место расположения / {
    прокси_пароль http://localhost:8080/;                                 
    прокси_буферизация выключена; 
    proxy_set_header Хост $host;
}

Слово совета: PhpMyAdmin не известен своей безопасностью, и если вы посмотрите на журналы вашего веб-сервера, вы увидите постоянные попытки найти установку phpMyadmin и проверить ее на наличие различных уязвимостей.

На мой взгляд, phpMyadmin — это служба уровня разработки, и ее не должно быть на рабочем сервере. Гораздо безопаснее туннелировать ssh через ваш хост на ваш SQL-сервер, используя, например, MySQL Workbench или любой другой подходящий SQL-клиент.

Вы бы установили phpmyadmin на рабочем веб-сервере?

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.