我在DigitalOcean上创建了新的Droplet并安装了Docker。我有两个容器,一个用我的 NodeJS app = RestAPI 在8080端口,第二个用 Nginx 基本上暴露我的静态html文件(带AngularJS)端口80上的 。
但是现在,我想开始从我的前端AngularJS应用程序向NodeJS应用程序发出请求,但是通过端口80 。像:
$http({
method: 'GET',
url: '/api/myapi'
问题:两个Docker容器不能使用相同的端口(在这种情况下为80)。
如何在同一端口和同一域上公开RestAPI和Nginx WEB服务器?
这个想法是从AngularJS请求拥有域和相同的端口。
答案 0 :(得分:0)
一种可能的解决方案是将NodeJS容器与Nginx容器相关联,并将端口8080
从NodeJS映射到Nginx。 您还需要通过将NodeJS容器中的卷挂载到Nginx来与Nginx容器共享NodeJS文件。
然后在端口8080
上创建一个Nginx上游,以便它可以代理对该端口的请求。接下来为Nginx配置添加规则,以便在请求任何静态文件时,nginx为其提供服务。但是对于任何非静态请求,请将请求传递给上游。