nginx负载平衡器-Docker compose

nginx负载平衡器-Docker compose,docker,nginx,docker-compose,Docker,Nginx,Docker Compose,我在容器内的端口5000上运行了一个简单的flask应用程序,我正在尝试添加nginx负载平衡来扩展该应用程序(3个实例) 这是我的docker compose文件: version: "3.7" services: chat-server: image: chat-server build: context: . dockerfile: Dockerfile volumes:

我在容器内的端口5000上运行了一个简单的flask应用程序,我正在尝试添加nginx负载平衡来扩展该应用程序(3个实例)

这是我的
docker compose
文件:

version: "3.7"

services: 
    chat-server:
        image: chat-server
        build: 
            context: .
            dockerfile: Dockerfile
        volumes: 
            - './chat_history:/src/app/chat_history'
        networks: 
            - "chat_net"

    ngnix-server:
        image: nginx:1.13
        ports: 
            - "8080:80"
        volumes: 
            - './ngnix.conf:/etc/ngnix/nginx.conf'
        networks: 
            - "chat_net"
        depends_on: 
            - chat-server

networks: 
    chat_net:
这是我的
nginx.conf
文件:

events { worker_connections 1024;}

http {
    upstream app {
        server chat-server_1:5000;
        server chat-server_2:5000;
        server chat-server_3:5000;

    }
}

server {
    listen 80;
    location / {
        proxy_pass http://app;
    }
}

这两项服务都在同一个
chat\u net
网络上,但当我在浏览器上点击
localhost:8080
时,我会看到nginx默认页面,这是为什么?我遗漏了什么?

您有一个输入错误,没有正确地装入
nginx.conf
文件

在卷部分的几个地方拼写它
ngnix
,容器使用默认配置运行(因此默认主页)

一旦你解决了这个问题,你可能会遇到@Federkun提到的错误(nginx将无法解析你代理的3个域名)

您的
服务器
指令也位于错误的位置(它需要位于
http
部分)

这应该是文件的修改版本:

events { worker_connections 1024;}

http {
    upstream app {
        server chat-server:5000;
    }
    server {
        listen 80;
        location / {
            proxy_pass http://app;
        }
    }
}

请注意,这比需要
nginx
了解副本计数要好。您可以使用
--scale chat server=N
运行
docker compose up
,并通过使用不同的
N
运行相同的命令随时调整大小,而无需停机。

您有一个输入错误,并且没有正确装入
nginx.conf
文件

在卷部分的几个地方拼写它
ngnix
,容器使用默认配置运行(因此默认主页)

一旦你解决了这个问题,你可能会遇到@Federkun提到的错误(nginx将无法解析你代理的3个域名)

您的
服务器
指令也位于错误的位置(它需要位于
http
部分)

这应该是文件的修改版本:

events { worker_connections 1024;}

http {
    upstream app {
        server chat-server:5000;
    }
    server {
        listen 80;
        location / {
            proxy_pass http://app;
        }
    }
}

请注意,这比需要
nginx
了解副本计数要好。您可以使用
--scale chat-server=N
运行
docker compose up
,并通过使用不同的
N
运行同一命令随时调整大小,而无需停机。

谁/如何解决
chat-server_1
?我猜这只是聊天服务器:5000我猜它们运行在一台机器上,那么3台聊天服务器如何在同一个端口5000上侦听?谁/如何解析
聊天服务器1
?我猜这只是聊天服务器:5000我猜它们运行在一台机器上,那么3台聊天服务器如何在同一个端口5000上侦听呢?