MEAN Stack-Angular只能通过域名进行通信

时间:2018-10-03 20:58:54

标签: node.js angular localhost mean

我已经在基于UBUNTU 18的Digital Ocean Droplet上设置了Mean堆栈。 我在nginx端口80上使用Angular6,在端口3333上使用了nodejs,我在同一台计算机上运行。我还启用了nodejs的CORS。 Angular应用程序以prod的形式生成并复制到服务器。我已经按照数字海洋中的描述启用了私有IP,并且我可以使用localhost,内部IP和127.0.0.1成功卷曲api(nodejs)

现在是问题:当我从angular6调用API时,除了域名以外的任何内容都给我一个错误->连接被拒绝,未知错误!在我的开发PC本地,一切正常。我以为这可能是一个问题,但是我可以通过IP从开发机器上访问远程API,而没有任何问题。我想念什么?我发现能够通过域名而不是通过内部IP访问它非常奇怪... 请注意,在开发PC上,Angular是作为ng服务运行的...唯一的区别是,在将应用程序上载到远程服务器之前,它是按产品构建的。

1 个答案:

答案 0 :(得分:0)

Angular无法访问私有ip,因为Angular代码运行在您的浏览器而非服务器上。因此,除非您通过vnc在服务器上直接运行浏览器,否则您的本地计算机将无法访问专用网络(因此也无法访问专用ip)。

Digital ocean可能建议您设置一个专用ip,以便可以将数据库放在专用网络中,以便将其防火墙隔离。

任何人,请在您的角度代码中使用FQDN或公共IP。