Рейтинг:0

Docker-compose: как использовать обратный прокси Nginx с маршрутизацией

флаг it

Я использую docker-compose с обратным прокси-сервером nginx, чтобы запускать его на сервере с разными путями:

  • server_ip/бэкенд
  • server_ip / интерфейс

должен работать на порту 80.

Я тестирую его с помощью docker-compose, используя nginx в качестве имени веб-контейнера и phpmyadmin в качестве имени контейнера myadmin (mysql):

Сервисы:
    веб:
        изображение: nginx:alpine
        сети:
            докер-сеть:
               псевдонимы:
                   - имя интерфейса
        имя_контейнера: сеть
        тома:
            - "./etc/nginx/default.conf:/etc/nginx/conf.d/default.conf"
            - "./и т.д./ssl: /и т.д./ssl"
            - "./веб:/вар/www/html"
            - "./etc/nginx/default.template.conf:/etc/nginx/conf.d/default.template"
        порты:
            - "${HTTP_PORT}:80"
            - "${HTTPS_PORT}:443"
        среда:
            - NGINX_HOST=${NGINX_HOST}
            #- VIRTUAL_HOST= a.com
        команда: /bin/sh -c "envsubst '$$NGINX_HOST' < /etc/nginx/conf.d/default.template > /etc/nginx/conf.d/default.conf && nginx -g 'демон выключен;' "
        перезапуск: всегда
        зависит от:
            - пхп
            - mysqldb

    php:
        изображение: nanoninja/php-fpm:последнее
        сети:
            докер-сеть:
               псевдонимы:
                   - php-имя  
        имя_контейнера: php-fpm
        перезапуск: всегда
        тома:
            - "./etc/php/php.ini:/usr/local/etc/php/conf.d/php.ini"
            - "./веб:/вар/www/html"

    мой администратор:
        изображение: phpmyadmin/phpmyadmin
        сети:
            докер-сеть:
               псевдонимы:
                   - backend-имя  
        имя_контейнера: myadmin
        порты:
            - "${PHPMYADMIN_PORT}:80"
        среда:
            - PMA_ARBITRARY=1
            - PMA_HOST=${MYSQL_HOST}
           # - PMA_ABSOLUTE_URI: https://localhost/pma/
        перезапуск: всегда
        зависит от:
            - mysqldb

    mysqldb:
        строить:
            контекст: .
            dockerfile: Dockerfile-mariadb
            аргументы:
                MARIADB_VERSION: ${MARIADB_VERSION}
        сети:
            докер-сеть:
               псевдонимы:
                   - mysql-имя
        имя_контейнера: ${MYSQL_HOST}
        перезапуск: всегда
        env_file:
            - ".env"
        среда:
            - MYSQL_DATABASE=${MYSQL_DATABASE}
            - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
            - MYSQL_USER=${MYSQL_USER}
            - MYSQL_PASSWORD=${MYSQL_PASSWORD}
        порты:
            - "127.0.0.1:${MYSQL_PORT}:3306"
        тома:
            - "./mysql-bbdd:/var/lib/mysql"

сети:
    докер-сеть:
       # водитель: мост

используя файл nginx default.conf для обратного прокси:

сервер {
    слушать 80 default_server;
    слушать [::]:80 default_server;
    имя_сервера локальный хост;

    индекс index.php index.html;
    журнал_ошибок /var/log/nginx/error.log;
    журнал_доступа /var/log/nginx/access.log;
    корень /var/www/html/public;

    расположение ~ \.php$ {
        try_files $uri = 404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass PHP: 9000;
        fastcgi_index index.php;
        включить fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }

    место расположения / {
          
        proxy_pass http://web;
         
    }

    расположение /API {
  
        прокси_пароль http://myadmin:8080/;
    }

    местоположение = /404.html {
 
        внутренний;
    }
}

а у меня не работает когда ставлю ip сервера с его маршрутами, не знаю что делать.

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

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