烧瓶+;Nginx反向代理拒绝在docker容器中连接

烧瓶+;Nginx反向代理拒绝在docker容器中连接,docker,nginx,flask,docker-compose,Docker,Nginx,Flask,Docker Compose,我有一个React应用程序,它使用Flask作为后端。我正在尝试将react应用程序从Nginx服务器上移动。Nginx和Flask服务器都位于docker容器内。静态内容工作正常,但当站点尝试代理对flask服务器的调用时,连接被拒绝 我在Flask服务器上没有看到任何日志,因此我认为请求不会进入Flask容器。我尝试过将代理更改为访问不同的端口,但遇到了相同的问题。难道不应该允许容器彼此通信,或者我必须显式地允许某些端口打开吗?他们之间需要WSGI服务器吗 Nginx default.con

我有一个React应用程序,它使用Flask作为后端。我正在尝试将react应用程序从Nginx服务器上移动。Nginx和Flask服务器都位于docker容器内。静态内容工作正常,但当站点尝试代理对flask服务器的调用时,连接被拒绝

我在Flask服务器上没有看到任何日志,因此我认为请求不会进入Flask容器。我尝试过将代理更改为访问不同的端口,但遇到了相同的问题。难道不应该允许容器彼此通信,或者我必须显式地允许某些端口打开吗?他们之间需要WSGI服务器吗

Nginx default.conf

server {

   listen        80;
   server_name   localhost;

   location / {
      index      index.html;
      root       /usr/share/nginx/html;
   }

   location /api/ {
      proxy_pass http://flask:5000;
      proxy_http_version 1.1;
      proxy_set_header Connection "";
      proxy_set_header Host "localhost";
   }

}
docker-compose.yml

version: "3"
services:
    nginx:
        image: nginx
        volumes:
            - /home/cookery/Cookery/dining/build:/usr/share/nginx/html
            - /home/cookery/Cookery/docker/docker.conf:/etc/nginx/conf.d/default.conf
        ports:
            - "8080:80"
    flask:
        build: ../kitchen
        ports:
            - "5000:5000"
这是我在向flask服务器请求时遇到的错误

2020/01/15 21:18:08 [error] 6#6: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.26.0.1, server: localhost, request: "GET /api/recipes/all HTTP/1.1", upstream: "http://172.26.0.2:5000/api/recipes/all", host: "localhost:8080", referrer: "http://localhost:8080/"

听起来Flask正在监听127.0.0.1,这意味着“本地机器”。每个容器都有自己的127.0.0.1,因此nginx连接到其容器127.0.0.1,这与正在收听的烧瓶不同

解决方案是让烧瓶监听0.0.0.0


有关更多详细信息,请参阅。

听起来Flask正在收听127.0.0.1,意思是“本地机器”。每个容器都有自己的127.0.0.1,因此nginx连接到其容器127.0.0.1,这与正在收听的烧瓶不同

解决方案是让烧瓶监听0.0.0.0


有关更多详细信息,请参阅。

您可以发布错误日志吗?我想这可能是CORS的问题。您还可以尝试在location之后添加*~,如location*~/api/以指出端点的所有路由。Flask服务器是否正在侦听127.0.0.1?@ItamarTurner tra在Flask服务器上说它已启动并正在侦听127.0.0.1:5000@ShahedMehbub添加*~使其无法将请求转发到flask服务器。我还认为可能是CORS,但我不确定如何测试我是否正确实现了flask_CORS。您可以从浏览器中检查API,看看这是否是CORS问题。另外,您的Dockerfile是否包含“EXPOSE 5000”命令?您可以发布错误日志吗?我想这可能是CORS的问题。您还可以尝试在location之后添加*~,如location*~/api/以指出端点的所有路由。Flask服务器是否正在侦听127.0.0.1?@ItamarTurner tra在Flask服务器上说它已启动并正在侦听127.0.0.1:5000@ShahedMehbub添加*~使其无法将请求转发到flask服务器。我还认为可能是CORS,但我不确定如何测试我是否正确实现了flask_CORS。您可以从浏览器中检查API,看看这是否是CORS问题。另外,您的Dockerfile是否包含“EXPOSE 5000”命令?这正是我要找的,谢谢。这正是我要找的,谢谢。