我正在尝试使用NginxDocker设置多个服务器。 现在,我想使其在本地运行,但我将其导出到网站上使用。 我的nginx.conf是:

worker_processes 1;

events { worker_connections 1024; }

http {
    client_max_body_size 2048M;
    sendfile on;

    upstream docker-phpmyadmin {
        server phpmyadmin;
    }
    upstream docker-wordpress {
        server wordpress;
    }
    upstream docker-api {
        server api;
    }
    upstream docker-frontend {
        server frontend;
    }

    server {
        listen 80;
        server_name example.com;
        location / {
            proxy_set_header Host $http_host;
            proxy_pass http://docker-frontend;
        }
    }
    server {
        listen 80;
        server_name api.example.com;
        location / {
            proxy_set_header Host $http_host;
            proxy_pass http://docker-api;
        }
    }

    server {
        listen 80;
        server_name db.example.com;
        location / {
            proxy_set_header Host $http_host;
            proxy_pass http://docker-phpmyadmin;
        }
    }
    server {
        listen 80;
        server_name admin.example.com;
        location / {
            proxy_read_timeout 3600;
            proxy_set_header Host $http_host;
            proxy_pass http://docker-wordpress;
        }
    }
}

我已经将这些条目添加到我的/etc/hosts

127.0.0.1 example.com
127.0.0.1 db.example.com
127.0.0.1 api.example.com
127.0.0.1 admin.example.com

docker-compose.yml包含:

  nginx:
    build: ./backend/nginx
    links:
      - wordpress
      - phpmyadmin
      - frontend
    ports: 
      - ${NGINX_EXTERNAL_PORT}:80
    volumes:
      - "./backend/nginx/nginx.conf:/etc/nginx/nginx.conf"

因此,在本地, NGINX_EXTERNAL_PORT设置为5000。我可以访问db.example.com:5000admin.example.com:5000 ,但是当我尝试访问我的主页example.com:5000我得到:

nginx_1       | 2019/09/18 21:26:52 [error] 6#6: *8 connect() failed (111: Connection refused) while connecting to upstream, client: 172.18.0.1, server: example.com, request: "GET / HTTP/1.1", upstream: "http://172.18.0.7:80/", host: "example.com:5000"
nginx_1       | 172.18.0.1 - - [18/Sep/2019:21:26:52 +0000] "GET / HTTP/1.1" 502 559 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36"

我在该服务器块的配置中丢失了某些内容吗? 谢谢!

#1楼 票数:0

原来是因为example.com的应用程序没有公开任何端口,所以在将EXPOSE 3000包含到Dockerfile并将上游更改为

upstream docker-frontend{
    server frontend:3000;
}

作品!

  ask by lucaswerner translate from so

未解决问题?本站智能推荐:

1回复

使用php7.1,laravel和nginx服务器设置docker,获取Bad Gateway 502异常

我正在尝试设置php7.1,nginx和laravel 5.5。 我收到连接服务器的错误502。 docker-compose.yml vhost.conf 在docker-compose.yml上,我的laravel服务器从localhost:8080开始,网络服务器也
1回复

Nginx代理上游服务器Docker Compose-拒绝502错误的网关连接

我正在尝试使用Docker Compose容器化与我的Web应用程序相关的所有内容,包括Nginx和SSL证书。 为此,我使用了JWilder和LetsEncrypt Companion的Nginx代理映像 ,但无法使nginx代理正常工作,结果是: Nginx 502错误网关
1回复

更改从单个nginx服务器提供的多个Angular应用程序的顶级路由?

我目前的配置如下:我在不同端口上运行的不同Docker容器上有两个单独的Angular应用程序,例如4200和4201.我直接通过它们的端口访问它们:www.myserver.com:4200和www.myserver。 COM:4201。 它们是使用以下docker-compose配置文件创
2回复

Nginx 代理传递到 dockerized gunicorn 服务器

我尝试部署具有以下架构的应用程序: 后端基于 dockerized Django Rest Framework,带有 gunicorn 监听 127.0.0.1:8000 前端基于 VueJS(未 dockerized)并调用我的后端 API 路由 NginX 用于服务前端页面并将 A
1回复

服务器上的 nginx 无法连接到 docker php-fpm

由于无法获得有效的 SSL,我在服务器上运行 nginx 而不是在 docker 容器中。 我有一个单独设置的 docker 容器,分别运行 my-sql 和 php-fpm。 当我运行所有这些时,我找不到文件,我不知道为什么。 当我运行sudo nginx -t它说一切正常,但在运行sudo s
1回复

服务器上的 NGINX Docker 和 Ubuntu 服务器上预先存在的 NGINX

我目前遇到了我的一个项目的问题,该项目将在我的 Ubuntu 服务器上的 Docker 中运行,使用 NGINX docker 容器来管理 Django 项目的反向代理。 我遇到的问题是我已经在该特定 Ubuntu 服务器上运行了以前的 Django 项目,因此端口 80 已经被实际服务器上运行的
1回复

Eclipse Ditto - 502 Gateway - Clean Deployment - 任何提示需要配置什么?

遵循Ditto 部署 Docker描述。 例如,添加一个新密码,然后执行 Docker compose 命令。 从干净的 Linuxmint 19.3 和新安装的 Docker 和 Docker-Compose 设置开始。 localhost:8080 可访问,但无法加载 API 定义(获取错误)
1回复

在 docker 容器中使用 nginx 运行 qgis 服务器(docker-compose)

我需要与 NGINX 一起运行 QGIS 服务器。 我必须使用 docker-compose 设置环境。 我正在使用评论中提到的 docker-compose 文件。 和 nginx.conf 如下 - docker-compose up ,nginx 容器始终处于重启状态。 docker-