如何设置 nginx 反向代理到多个容器,每个容器都有自己的 nginx 服务器

roo*_*oot 6 nginx docker jwilder-nginx-proxy nginx-reverse-proxy nginx-config

请在标记为重复之前阅读完整的问题,因为它不是重复的问题。我有一个 VPS,我想在其上部署多个 Web 应用程序(我已经阅读了相关帖子,当我们直接拥有子容器时,它们是完美的)。我的问题是不同的。我想管理每个具有自己的 nginx 的 Web 应用程序以路由到它的子域以及一些与它们相关的静态网站。我有两个码头工人。我的网络如下所示。图片。

容器网络

我的 NGINX 反向代理应该负责将域路由到相应的 nginx 容器。我不确定是否可能(这就是我寻求帮助的原因)。如果有人可以提供更好的理解,我愿意接受建议。以下是我对 nginx 代理容器和其他 Web 应用程序 docker yaml 文件代码的配置。我用过NGINX 代理

NGINX 代理 Docker 撰写文件

version: "3.7"
services:
  nginx-proxy:
    image: jwilder/nginx-proxy:alpine
    container_name: nginx-proxy
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro

networks:
  default:
    external:
      name: nginx-proxy
Run Code Online (Sandbox Code Playgroud)

网络应用 1 docker-compose.yml

version: "3.7"
networks:
  default:
    external:
      name: nginx-proxy
  yoda-network:
    driver: bridge
services:
    adminer:
        container_name: ${APP_NAME}_adminer
        image: adminer
        depends_on:
            - mysql
        expose:
            - 8080
        environment:
            VIRTUAL_HOST: yodaledger.com
            VIRTUAL_PORT: 8080
        networks:
            - yoda-network
    python:
        container_name: ${APP_NAME}_python
        image: python:3.6
        command: bash -c "pip3 install -r requirements.txt && python manage.py runserver 0.0.0.0:8000"
        volumes:
            - ${APP_PATH}var/www/api.yodaledger.com/yodaledger_backend:/app
            - ${APP_PATH}var/www/static.yodaledger.com:/app/static
        depends_on:
            - mysql
        working_dir: /app
        environment:
            - PYTHONUNBUFFERED=1
            - MYSQL_HOST=mysql
            - MYSQL_USER=${MYSQL_USER}
            - MYSQL_PASSWORD=${MYSQL_PASSWORD}
            - MYSQL_DATABASE=${MYSQL_DATABASE}
        networks:
            - yoda-network
   nginx:
        container_name: ${APP_NAME}_nginx
        image: nginx:alpine
        expose:
            - 443
            - 80
        volumes:
            - ${APP_PATH}var/www:/var/www
            - ${APP_PATH}var/log:/var/log/nginx
            - ${APP_PATH}var/ssl:/var/ssl
            - ${APP_PATH}etc/nginx:/etc/nginx
            - /tmp/${APP_NAME}/nginx:/tmp
        depends_on:
            - python
        environment:
            VIRTUAL_PORT: 443
            VIRTUAL_HOST: yodaledger.com,api.yodaledger.com,app.yodaledger.com,static.yodaledger.com
        networks:
            - yoda-network
            - default
   mysql:
        container_name: ${APP_NAME}_mysql
        image: mariadb:latest
        #ports:
        #    - "3306:3306"
        volumes:
            - ${APP_PATH}var/mysql:/var/lib/mysql
            - ${APP_PATH}etc/mysql:/etc/mysql
        environment:
            - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
            - MYSQL_DATABASE=${MYSQL_DATABASE}
            - MYSQL_USER=${MYSQL_USER}
            - MYSQL_PASSWORD=${MYSQL_PASSWORD}
            - TZ=Europe/Paris
        networks:
            - yoda-network
Run Code Online (Sandbox Code Playgroud)

WEB APPLICATION 2 看起来和WEB APPLICATION 1一样。