代码之家  ›  专栏  ›  技术社区  ›  ey dee ey em

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

  •  2
  • ey dee ey em  · 技术社区  · 8 年前

    设置: 我的Mac OS上正在运行以下所有操作系统:

    本地主机: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
    

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

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

    1 回复  |  直到 8 年前
        1
  •  3
  •   thaJeztah    8 年前

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

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

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