如何configurationnginx泊坞窗容器在不同的端口识别本地主机应用程序?

安装程序:以下所有内容都在我的Mac OS上运行:

localhost:8089 a nodejs REST api runing in my local, OUTSIDE of the nginx container, stand alone!

locahost:80个nginx docker container

我能够在nginx的docker容器中提供静态文件,但是当我把nginx的configuration设置为:

 http { server { location / { root /usr/share/nginx/html; } location /api/ { proxy_pass http://localhost:8089; } } } 

由于某种原因,任何localhost:80/api调用,假设指向http://localhost:8089; 呼叫正在返回404未find页面

 404 Not Found nginx/1.13.6 

任何想法在哪里configuration我犯了错误? 我觉得也许我不应该在nginx中使用localhost:8089 ? 但那我该用什么?

一个例子可以在这里findhttps://github.com/adamchenwei/docker-nginx-playground

容器有自己的networking命名空间/networking堆栈。 所以容器内的localhost就是容器本身的localhost。

如果您正在运行Docker for Mac,那么在容器中有一个特殊的主机名,允许您连接到主机上运行的服务。 有关更多信息,请参阅此答案。 https://stackoverflow.com/a/43541732/1811501

如果你在Linux上运行Docker,这个答案(在同一个问题上)允许你find要连接的IP地址; https://stackoverflow.com/a/31328031/1811501