2

设置:以下所有内容都在我的 Mac OS 上运行:

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

本地主机:80nginx docker container

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

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

出于某种原因,任何localhost:80/api假设直接http://localhost:8089;调用的调用都返回 404 not found 页面

404 Not Found

nginx/1.13.6

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

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

4

1 回答 1

3

容器有自己的网络命名空间/网络堆栈。所以localhost容器内部是容器本身的本地主机。

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

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

于 2017-12-06T05:01:36.047 回答