在 docker bridge 网络中连接到 localhost 开发服务器

在 docker bridge 网络中连接到 localhost 开发服务器

在 Docker 容器中我有一个正在运行的开发服务器,其运行位置如下:

http://127.0.0.1:8000/

我尝试通过 nginx 向该服务器发出请求:

nginx.conf

upstream service_rest {
    server restapi:8000;
}

server {

    location /rest/ {
        proxy_pass http://service_rest;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_redirect off;
    }
}

我的理解是这样的:

  1. 当我输入 localhost:9000/rest/ (端口 9000 暴露给我的主机并映射到 nginx docker 服务)时,nginx 会在端口 8000 上向上游查找 service_rest 服务器 --> 这部分有效
  2. service_rest:8000 自动“知道”该请求是针对http://127.0.0.1:8000/容器内运行的开发服务器

但问题是:我认为请求永远不会被传递到运行在http://127.0.0.1:8000/

我收到以下消息作为日志:

nginx_1 | 2019/05/11 07:49:06 [错误] 6#6:*1 connect() 连接到上游时失败(111:连接被拒绝),客户端:192.168.32.1,服务器:,请求:“GET /rest/admin/HTTP/1.1”,上游:“http://192.168.32.2:8000/rest/admin/", 主机:“localhost:9000”

http://192.168.32.2:8000/rest/admin/(桥接网络中容器的 ip)显然不等于,http://127.0.0.1:8000/尽管我有点认为它们是相等的?

我对 docker 和 nginx 还不太熟悉,对此有点困惑。你们能帮忙吗?

答案1

对于感兴趣的人士:

诀窍是不要让开发服务器在本地主机上运行,​​而是在:

0.0.0.0:8000

相关内容