【问题标题】:Node.JS proxy with Nginx and Docker带有 Nginx 和 Docker 的 Node.JS 代理
【发布时间】:2016-04-26 03:25:43
【问题描述】:

我有一个带有 nodejs 的 docker 容器,我有一个带有 nginx 的 docker 容器。

我已经告诉我的角度使用 ec2-xxx:8888/api 来使用 api。 因为我运行了我的 nodejs 容器:

docker run -d -p 8888:8888 --name nodejs localhost:5000/test/node-js-image:1

所以我在我的亚马逊上映射了我的 docker 的 8888。所以这是有效的。 我的 app.config.js 包含:

URL: 'http://ec2...',
      PORT: '8888',

我可以在ec2:8888/api 上看到我的 api 但是让服务器可以访问您的 api 并不能保存。所以我想像这样运行我的nodejs:

docker run -d --name nodejs localhost:5000/test/node-js-image:1

所以没有在我的亚马逊端口上映射容器端口。但是我仍然需要从我的 nginx 容器中访问 nodejs 容器。

我该怎么做? 我在我的 nginx.conf 中尝试过:

http {    
        upstream node-app {
              least_conn;
              server nodejs:8888 weight=10 max_fails=3 fail_timeout=30s;

        }

        server {
              listen 80;

              location / {
                alias /usr/share/nginx/html/dist/;
                index index.html;
              }

              location /api {
                proxy_pass http://node-app;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection 'upgrade';
                proxy_set_header Host $host;
                proxy_cache_bypass $http_upgrade;
              }
        }
}

但这不起作用。我只看到 HTML(没有 CSS),无法连接到 nodeJS 容器。

【问题讨论】:

    标签: node.js nginx amazon-ec2 docker dockerfile


    【解决方案1】:

    假设两个容器在同一台机器上运行,Docker 的legacy container links 是一种可能性。 Networking 是新的选择。

    启动你的nodejs容器
    docker run -d --name nodejs --expose 8888 <YOUR_NODEJS_IMAGE>
    

    -p ... 不同,--expose ... 选项使您的容器仅对链接的容器可见。

    使用指向 nodejs 的链接启动您的 nginx 容器:

    docker run -d --name nginx --link nodejs <YOUR_NGINX_IMAGE>
    

    为了从你的 nginx docker 容器访问 nodejs docker 容器,你必须使用 docker 注入的环境变量。 This gist 举例说明了如何做到这一点。

    【讨论】:

    • 谢谢,现在我可以在 ec:80/api 上看到我的 api(无需映射 8888)。但是我的静态文件仍然存在问题。它们以纯 HTML 显示,似乎与 API 没有任何联系。
    • 响应是:无法响应数据:并且它去ec:8888/api/app。 (我现在应该编辑我的 app.config.js 以使用端口 80 吗?)
    • 请确保您按照要点所示正确配置了 nginx。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-12
    • 2023-01-24
    • 2018-04-24
    • 1970-01-01
    • 1970-01-01
    • 2021-07-09
    相关资源
    最近更新 更多