首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NGINX多服务器模块- 502坏网关

NGINX多服务器模块- 502坏网关
EN

Stack Overflow用户
提问于 2019-09-19 05:32:31
回答 1查看 291关注 0票数 0

我正在尝试使用NginxDocker设置多个服务器。现在,我想让它在本地工作,但我会将它导出到中,以便在网站中使用它。我的nginx.conf是:

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
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包含:

代码语言:javascript
运行
复制
  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时,我得到:

代码语言:javascript
运行
复制
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"

我是否在该服务器块的配置中遗漏了什么?谢谢!

EN

回答 1

Stack Overflow用户

发布于 2019-09-19 05:49:16

事实证明,这是因为example.com中的应用程序没有公开任何端口,因此在将EXPOSE 3000包含到Dockerfile并将上游更改为

代码语言:javascript
运行
复制
upstream docker-frontend{
    server frontend:3000;
}

成功了!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58000986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档