微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

node.js – 如何将我的NodeJS与我的Angular连接(在Nginx中)

我有一个有角度和nodejs的回购.
我在jenkins演出:

# install globally
npm install -g bower
npm install -g gulp

# install
bower install
npm install

# build dist folder
gulp build

现在我在我的根里:

Dockerfile.Nginx  Dockerfile.nodejs  README.md  bower.json  dist  gulp.config.js  gulpfile.js  node_modules  package.json  server.js  src

我正在复制我的Nginx容器中的dist文件夹.所以我主持角度. (使用dockerfile)

FROM Nginx
# copy folder
copY dist /usr/share/Nginx/html/dist

我正在复制:gulp.config.js gulpfile.js node_modules server.js到我的nodejscontainer. (还有一个dockerfile)

FROM node

# Create app directory
RUN mkdir -p /usr/src/www
workdir /usr/src/www 

# copy 
copY node_modules /usr/src/www/
copY gulpfile.js /usr/src/www/
copY gulp.config.js /usr/src/www/
copY server.js /usr/src/www/

 EXPOSE 8080
CMD [ "node", "server.js" ]

我运行2个容器,但是Nginx不与nodejs通信

EDIT1:
启动容器:

docker run -d -p 8888:8888 --name "nodejs" localhost:5000/test/nodejs:1

docker run -d -p 80:80 --name "Nginx" localhost:5000/test/Nginx:1

EDIT2:我的Nginx.conf看起来像这样:

http {

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

        server {
              listen 80;
              location /dist {
                alias /usr/share/Nginx/html/dist/;
               }

              location ~* /api {
              #location / {
                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;
              }
        }
}

我的server.js看起来像:

app.get('/api/hello', requestProxy({
  url: xxx + "/hello"
}));

解决方法:

您需要公开Nginx(角度)容器将连接到的node.js容器的端口.
请参阅docker文档的Connect using network port mapping部分.

更新:我认为,您需要将Nginx配置文件配置到节点容器. This question有与您的用例相关的示例Nginx文件(尽管与容器无关).

编辑:要使用Nginx映射节点应用程序,首先需要将节点容器与Nginx容器链接.

docker run -d -p 80:80 --name "Nginx" --link nodejs:nodejs localhost:5000/test/Nginx:1

将节点容器与Nginx容器链接时,节点容器的地址将保存在/ etc / hosts中.所以Nginx容器可以从那里访问节点的地址.

因此,在Nginx配置文件中,nodejs可以作为nodejs的容器地址访问:

http {

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

        server {
              listen 80;

              location / {
                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;
              }
        }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐