在端口80上使用AWS,AngularJS项目,是否使用非端口80作为WebAPI后端?

时间:2015-08-11 23:21:35

标签: angularjs amazon-web-services asp.net-web-api amazon-ec2

我有一个双项目解决方案:1)Angular前端2)WebAPI后端。 我们正在部署到Amazon EC2实例。在那个盒子里,我在Angular代码的端口80上创建了一个网站(停止默认)。我还在WebApi的非80端口上创建了第二个网站。此解决方案目前仅在我的开发盒上使用开发类型设置时无法在EC2盒上工作。在我选择哪种补救途径之前,我想知道什么是最佳做法。

显然,有人把Angular放在端口80上,因为它是html内容,但是api怎么样呢,一个人把它放在另一个端口上,或者一个人使用dns子域,还是端口80. [在某些时候我和#39;我也需要做https,这是一个因素,太多的端口?]

1 个答案:

答案 0 :(得分:1)

html和webapi最终都应由单个服务器提供。

这是因为浏览器强制执行CORS,即相同的原始政策。如果您收到来自“http://domainname:80/index.html”的html内容,则无法对“http://domainname:8080/api/feature”进行ajax和http put / get查询,依此类推。

话虽这么说,你可以在端口80上拥有像nginx或tomcat这样的前端监听器,并直接在端口80上提供角度app +所有其他静态html。 即你在http://domainname:80/index.html得到你的页面,你可以在不同的端口上托管所有的api调用,但是要求nginx根据你必须定义的一些规则,子域或任何不需要的规则将这些调用重定向到不同的端口请求index.html,让它们重定向到在端口8080上运行的另一台服务器。确保阻止生产环境中对此端口的公共访问,以便没有人可以直接调用您的api