Nginx 代理管理器坏网关(Docker Wordpress 和 Nextcloud)

Posted

技术标签:

【中文标题】Nginx 代理管理器坏网关(Docker Wordpress 和 Nextcloud)【英文标题】:Nginx Proxy Manager Bad Gateway (Docker Wordpress and Nextcloud) 【发布时间】:2021-08-23 22:24:26 【问题描述】:

我家里有树莓,我尝试运行以下设置:

nginx 代理管理器 (jc21/nginx-proxy-manager) 作为访问的反向代理 搬运工(搬运工/搬运工-ce) Wordpress(docker 官方图片) Nextcloud(docker 官方镜像)

对于搬运工来说它工作得非常好,但对于其他两个我得到一个错误的网关错误(https 和 http)。

我在网上找到了一些解决方案,但没有一个对我有用 + 所有这些都是“做这个、这个和这个”的解决方案。我想真正了解发生了什么以及如何解决这个问题。

我在 Nginx 代理管理器中链接了我使用的 docker-compose 文件和 conf 屏幕。

感谢您的帮助!

Nginx 代理管理器

    version: "3.8"
    networks:
        dockerpi:
        external: true
    services:
    npm-app:
        image: "jc21/nginx-proxy-manager:latest"
        ports:
        - "80:80"
        - "81:81"
        - "443:443"
        environment:
        DB_mysql_HOST: "npm-db"
        DB_MYSQL_PORT: 3306
        DB_MYSQL_USER: "npm"
        DB_MYSQL_PASSWORD: "npm"
        DB_MYSQL_NAME: "npm"
        volumes:
        - ./data:/data
        - ./letsencrypt:/etc/letsencrypt
        networks:
        - dockerpi
    npm-db:
        image: "jc21/mariadb-aria:latest"
        environment:
        MYSQL_ROOT_PASSWORD: "npm"
        MYSQL_DATABASE: "npm"
        MYSQL_USER: "npm"
        MYSQL_PASSWORD: "npm"
        volumes:
        - ./data/mysql:/var/lib/mysql
        networks:
        - dockerpi

搬运工

    version: "3.8"
        networks:
            dockerpi:
            external: true
        services:
        portainer:
            image: portainer/portainer
            privileged: true
            ports:
            - "8000:8000"
            - "9000:9000"
            volumes:
            - "./data:/data"
            - "/var/run/docker.sock:/var/run/docker.sock"
            restart: always
            networks:
            - dockerpi

Nextcloud

    version: "3.8"
    networks:
        dockerpi:
        external: true
    services:
    nextcloud-db:
        image: mariadb
        restart: always
        command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
        volumes:
        - ./db:/var/lib/mysql
        environment:
        - MYSQL_ROOT_PASSWORD=nexcloud
        - MYSQL_PASSWORD=nexcloud
        - MYSQL_DATABASE=nextcloud
        - MYSQL_USER=nextcloud
        networks:
        - dockerpi
    nextcloud-app:
        image: nextcloud
        restart: always
        ports:
        - 8010:80
        - 9010:9000
        links:
        - nextcloud-db
        volumes:
        - ./nextcloud:/var/www/html
        environment:
        - MYSQL_PASSWORD=nextcloud
        - MYSQL_DATABASE=nextcloud
        - MYSQL_USER=nextcloud
        - MYSQL_HOST=nextcloud-db
        networks:
        - dockerpi

WordPress

    version: "3.8"
    networks:
        dockerpi:
        external: true
    services:
    wp-test:
        image: wordpress
        restart: always
        ports:
        - 8020:80
        environment:
        WORDPRESS_DB_HOST: wp-test-db
        WORDPRESS_DB_USER: exampleuser
        WORDPRESS_DB_PASSWORD: examplepass
        WORDPRESS_DB_NAME: exampledb
        volumes:
        - ./wordpress:/var/www/html
        networks:
        - dockerpi
    wp-test-db:
        image: mariadb
        restart: always
        environment:
        MYSQL_DATABASE: exampledb
        MYSQL_USER: exampleuser
        MYSQL_PASSWORD: examplepass
        MYSQL_RANDOM_ROOT_PASSWORD: "1"
        volumes:
        - ./db:/var/lib/mysql
        networks:
        - dockerpi

ps:我不发布屏幕,因为我现在似乎无法发布图像。

【问题讨论】:

【参考方案1】:

我也面临同样的问题。原来你需要在 nginx 代理管理器的“端口”字段中输入容器端口。例如对于 wordpress,您需要在 'forward/ip' 字段中输入 'wordpress' 并在端口中输入 '80' 才能工作。

【讨论】:

【参考方案2】:

如果这是关于 nginx 代理管理器的管理页面的错误网关错误,我这样做并为我修复了,我希望它也可以解决您的问题:

    将您的 docker-compose.yml 文件更改为:
version: '2'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'
      - '81:81'
      - '443:443'
    environment:
      DB_MYSQL_HOST: "db"
      DB_MYSQL_PORT: 3306
      DB_MYSQL_USER: "npm"
      DB_MYSQL_PASSWORD: "npm"
      DB_MYSQL_NAME: "npm"
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
  db:
    image: 'jc21/mariadb-aria:latest'
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: 'npm'
      MYSQL_DATABASE: 'npm'
      MYSQL_USER: 'npm'
      MYSQL_PASSWORD: 'npm'
    volumes:
      - ./data/mysql:/var/lib/mysql

我将其更改为版本 2 而不是 3!

    运行这些命令:

sudo docker-compose down

然后

sudo docker-compose up -d

【讨论】:

以上是关于Nginx 代理管理器坏网关(Docker Wordpress 和 Nextcloud)的主要内容,如果未能解决你的问题,请参考以下文章

Docker安装的Nginx如何代理宿主机的服务

Docker 的 Nginx 504 网关超时

Docker安装的Nginx如何代理宿主机的服务

nginx开源可视化代理管理器nginx-proxy-manager

Nginx反向代理docker容器进行域名解析绑定的实现方法

Docker集群实验环境布署--swarm6 配置上层Nginx代理,让任意Docker client访问得到高可用的管理API