【问题标题】:Flask + Nginx reverse proxy refuses to connect in docker containers [duplicate]Flask + Nginx反向代理拒绝在docker容器中连接[重复]
【发布时间】:2020-05-02 16:04:41
【问题描述】:

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

我在 Flask 服务器上看不到任何日志,所以我认为请求没有进入 Flask 容器。我尝试更改代理以访问不同的端口并遇到相同的问题。不应该允许容器相互通信还是我必须明确允许某些端口打开?我需要它们之间的 WSGI 服务器吗?

Nginx 默认配置文件

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"

这是我对烧瓶服务器的请求时遇到的错误

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/"

【问题讨论】:

  • 你能发布错误日志吗?我想这可能是一个CORS问题。您也可以尝试在 location 之后添加 *~,例如 location *~ /api/ 以指出端点的所有路由。
  • Flask 服务器是否在监听 127.0.0.1?
  • @ItamarTurner-Trauring Flask 服务器确实说它已启动并正在监听 127.0.0.1:5000
  • @ShahedMehbub 添加 *~ 阻止它将请求转发到烧瓶服务器。我还认为它可能是 CORS,但我不确定如何测试我是否正确实施了 flask_cors。
  • 您可以从浏览器检查 API 以查看是否是 CORS 问题。另外,您的 Dockerfile 是否包含“EXPOSE 5000”命令?

标签: docker nginx flask docker-compose


【解决方案1】:

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

解决方案是让 Flask 监听 0.0.0.0。

更多详情请见https://pythonspeed.com/articles/docker-connection-refused/

【讨论】:

  • 这正是我想要的,谢谢。
猜你喜欢
  • 2016-08-12
  • 1970-01-01
  • 2021-02-03
  • 2022-01-20
  • 2021-05-04
  • 2021-05-28
  • 1970-01-01
  • 2018-03-20
  • 1970-01-01
相关资源
最近更新 更多