设定: 以下所有内容都在我的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的配置设置为:
http {
server {
location / {
root /usr/share/nginx/html;
}
location /api/ {
proxy_pass http://localhost:8089;
}
}
}
出于某种原因,任何假定指向localhost:80/api
来电的http://localhost:8089;
来电都会返回404未找到的网页
404 Not Found
nginx/1.13.6
我知道配置错在哪里?我觉得也许我不应该在nginx中使用localhost:8089
?但那我该怎么用?
这里有一个例子 https://github.com/adamchenwei/docker-nginx-playground
答案 0 :(得分:1)
容器有自己的网络命名空间/网络堆栈。所以容器内的localhost
是容器本身的本地主机。
如果您运行的是Docker for Mac,则容器中有一个特殊的主机名,允许您连接到主机上运行的服务。有关更多信息,请参阅此答案; https://stackoverflow.com/a/43541732/1811501
如果你在Linux上运行Docker,这个答案(在同一个问题上)允许你找到要连接的IP地址; https://stackoverflow.com/a/31328031/1811501