如何配置 nginx docker 容器以识别不同端口的本地主机应用程序?

how to config nginx docker container to recognize localhost application in different port?

设置: 以下是我的 Mac OS 上的 运行:

本地主机:8089 a nodejs REST api runing in my local, OUTSIDE of the nginx container, stand alone!

本地主机:80 nginx docker container

我能够在 nginx docker 容器内提供静态文件,但是当我将 nginx 的配置设置为:

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

出于某种原因,任何假设指向 http://localhost:8089; 调用的 localhost:80/api 调用都会返回 404 未找到页面

404 Not Found

nginx/1.13.6

知道我哪里配置错了吗?我觉得也许我不应该在 nginx 中使用 localhost:8089?但是我应该使用什么?

可以在此处找到示例 https://github.com/adamchenwei/docker-nginx-playground

容器有自己的网络命名空间/网络堆栈。所以容器里面的localhost就是容器本身的localhost。

如果您是 运行 Docker Mac,容器内有一个特殊的主机名,允许您连接到 运行 上的服务主机本身。有关详细信息,请参阅此答案;

如果您在 Linux 上 运行 Docker,这个答案(在同一个问题上)允许您找到要连接的 IP 地址;