Рейтинг:0

Docker + Nginx + несколько сайтов с обратным прокси; проблема с каталогом

флаг tr

Я только что настроил свой сервер на многосайтовый revproxy, используя внешнюю сеть docker, и настроил свой контейнер revproxy nginx для работы с fastcgi. Прямо сейчас, в целях тестирования, один из сайтов работает, но кажется, что nginx для контейнера веб-сайта неправильно определяет путь к файлу индекса laravel и предоставляет мне только страницу «Добро пожаловать nginx» по умолчанию.

Буду очень благодарен за любую помощь.

Мой Докерфайл для контейнера revproxy

ОТ nginx:alpine

ВЫСТАВИТЬ 80/TCP
ВЫСТАВИТЬ 443/TCP

CMD ["/bin/sh", "-c", "exec nginx -g 'демон выключен;';"]
РАБОЧИЙ КАТАЛОГ /var/www

docker-compose для контейнера revproxy

версия: '3.8'
Сервисы:
  nginx-прокси:
    строить: ./
    имя_контейнера: nginx-прокси
    порты:
      - 80:80
      - 443:443
    тома:
      - ./default.conf:/etc/nginx/conf.d/default.conf
      - /var/www:/var/www/html
      - ./backend-not-found.html:/var/www/html/backend-not-found.html
      - ./сертификаты:/etc/nginx/сертификаты:ro
    сети:
      - прокси
    перезапуск: всегда

сети:
  прокси:
    внешний:
      имя: nginx-прокси

nginx.conf файл для контейнера revproxy


сервер {
    слушать 80;
    имя_сервера site.com;

    кодировка UTF-8;
    
    корень /var/www/html/laravel/public;

    error_page 404 /backend-not-found.html;
    местоположение = /backend-not-found.html {
        позволять все;
    }

    расположение ~ \.php$ {
        преобразователь 127.0.0.11;
        установить $upstream laravel-app:9000;
        # nginx теперь запускается, если хост недоступен
        fastcgi_pass $ вверх по течению; 
        try_files $uri = 404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_index index.php;
        включить fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
    место расположения / {
        преобразователь 127.0.0.11;
        установить $upstream http://laravel-nginx:80;
        # nginx теперь запускается, если хост недоступен
        proxy_pass $ вверх по течению;
        try_files $uri $uri/ /index.php?$query_string;
        gzip_static включен;
    }
}
# По умолчанию
сервер {
    слушать 80 default_server;

    имя сервера _;
    корень /var/www/html;

    кодировка UTF-8;

    error_page 404 /backend-not-found.html;
    местоположение = /backend-not-found.html {
        позволять все;
    }
    место расположения / {
        вернуть 404;
    }

    доступ_лог выключен;
    log_not_found выключен;
    error_log /var/log/nginx/error.log ошибка;
}

И docker-compose файл для контейнера веб-сайта

версия: '3.8'
Сервисы:

  # PHP-сервис
  приложение:
    строить:
      аргументы:
        Пользователь: Алекс
        ид: 1000
      контекст: ./
      докерфайл: Докерфайл
    container_name: ${APP_NAME}-приложение
    перезапуск: всегда
    телетайп: правда
    рабочий_каталог: /var/www
    порты:
      - 9000:9000
    ссылки:
      - дб
    тома:
      - ./:/var/www
      - ./docker-compose_configs/php/custom.ini:/usr/local/etc/php/conf.d/custom.ini
    сети:
      - прокси
      - сеть приложений

  #Сервис Nginx
  нгинкс:
    изображение: nginx:alpine
    имя_контейнера: ${APP_NAME}-nginx
    перезапуск: всегда
    телетайп: правда
    порты:
      - 8080:80
    перезапуск: всегда
    тома:
       - ./:/var/www/html
    сети:
      - прокси
      - сеть приложений
    зависит от:
      - приложение
    ссылки:
      - приложение


  #Служба MySQL
  дБ:
    изображение: mysql: последний
    container_name: ${APP_NAME}-db
    перезапуск: если не остановлен
    телетайп: правда
    порты:
      - 3306:3306
    среда:
      MYSQL_DATABASE: ${DB_DATABASE}
      MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
      MYSQL_PASSWORD: ${DB_PASSWORD}
      MYSQL_USER: ${DB_USERNAME}
      SERVICE_TAGS: разработка
    сети:
      - сеть приложений
    тома:
      - dbdata:/var/lib/mysql
      - ./docker-compose_configs/mysql/my.cnf:/etc/mysql/my.cnf


  #PhpMyAdmin
  phpmyadmin:
    изображение: phpmyadmin/phpmyadmin
    container_name: ${APP_NAME}-pma
    среда:
      PMA_HOST: дб
      PMA_ARBITRARY: 1
      ЗАГРУЗИТЬ_LIMIT: 400M
    перезапуск: всегда
    сети:
      - сеть приложений
    порты:
      - 8081:80
    зависит от:
      - нгинкс
      - дб

  #эластичный поиск
  эластичный поиск:
    изображение: эластичный поиск: 7.12.1
    container_name: ${APP_NAME}-elasticsearch
    тома:
      - данные эластичного поиска:/usr/доля/эластичный поиск/данные
    среда:
      - discovery.type=один узел
      - cluster.routing.allocation.disk.threshold_enabled=false
      - bootstrap.memory_lock=истина
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    uлимит:
      мемлок:
        мягкий: -1
        сложно: -1
    порты:
      - "9200:9200"
    сети:
      - сеть приложений
    зависит от:
      - дб

#Докер Сети
сети:
  сеть приложений:
    имя: ${APP_NAME}-сеть
    водитель: мост
  прокси:
    внешний:
      имя: nginx-прокси

#Тома
тома:
  БД:
    водитель: местный
  данные эластичного поиска:
    водитель: местный

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

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