如何使用Nginx docker作为反向代理在两个不同容器之间路由?

时间:2018-11-27 14:38:03

标签: node.js docker nginx docker-compose reverse-proxy

我正在尝试使用nginx docker映像作为反向代理,以根据路径在2个不同的容器之间路由。一个容器包含一个静态HTML文件,另一个容器是一个nodeJS应用程序

这是我的Nginx反向代理容器的proxy.config文件

server {
  listen 80;

  location / {
    proxy_pass http://app;
  }

  location /hello {
    proxy_pass http://node-app;
  }

}

app容器是一个简单的nginx容器,带有一个静态HTML文件,该文件显示HELLO WORLD,而node-app容器是nodeJS应用程序。

这是我的docker-compose.yml

version: '3.1'

services: 
  app:
    build: app

  node-app:
    build: node-app
    ports:
      - "8080:8080"

  proxy:
    build: nginx-reverseproxy
    ports:
      - "80:80"

这是我的nodeJS应用程序的index.js

const express = require('express');

// Constants
const PORT = 8080;

// App
const app = express();
app.get('/', (req, res) => {
  res.send('Hello world\n');
});

app.listen(PORT);
console.log(`Running on ${PORT}`);

关于我要怎么做的任何想法?

运行此命令时,当我在http://localhost上获取代码时,它将在'app'容器中为我提供静态页面。但是,当我转到http://localhost/hello时,它显示502错误的网关。

但是当我转到localhost:8080时,将提供NodeJS响应。我只需要一种将其路由到localhost / hello

的方法

任何帮助将不胜感激。谢谢!

0 个答案:

没有答案