
我已经使用两个完全解耦的组件编写了一个Web应用程序:
基于场所框架的API,向任何客户端提供types为/API/*请求。
基于使用grunt build AngularJs分离前端
现在,前端与API交谈,但是我希望这两个单元都部署在代理之后,比如Nginx ,它可以将传入请求代理到相应的组件。 例如,我想所有的/web/*请求被送到一个包含所有客户端源代码(Js / HTML / etc)的Web目录,并且所有/API/*请求都被代理到我的Play框架服务器(我们将需要传递到服务器的path,以确保正确的path返回)返回所有API相关的数据。 例如,像GET domain.com/API/users这样的请求应该在内部代理GET 127.0.0.1:9000/API/users 。
我已经在网上看到了一些关于这方面的讨论,我仍然想通过你们来看看哪种方法是最好的方法。
最终,我想要一个面向服务的体系结构,我希望能够更灵活地解耦事物。
如何在windows上使用最新的AndroID模拟器configurationfiddler2或Charles Web Proxy之类的http代理?
是否有一个标准的windows对话框获取代理用户名和密码?
通过windows命令行设置代理,包括login参数
WebSocket的API网关
Nginx条件代理传递
wget不使用基于环境variables的代理设置
Nginx负载均衡器和OAuth
如何转发一个本地端口到另一个?
Apache httpClIEnt 4每个代理的持续连接,而不是每个路由
加载大文件时,Chrome上的Nginx和代理服务器上的ERR_CONTENT_LENGTH_MISMATCH
我已经构建并部署了Play Framework + AngularJs应用程序,发现Nginx是一个很好的方法。
随着您的应用程序体系结构的发展,Nginx也为您提供了一个增长途径来处理更多的服务。 例如,您可以为/API/user/*添加专用服务,同时保留所有其他/API/*路由的标准服务。
在某些时候,你可能需要去商业产品,但为了现在和可预见的将来我的需求,Nginx是惊人的。
我的Nginx配置的相关部分是:
server { Listen 80; # Without this,Play serves the assets from within it's bundled jar. That's # fine and works but seems unnecessary when Nginx can serve the files directly. location /assets { alias /app/live/my-play-app-here/active/public; } location / { proxy_pass http://localhost:9000; proxy_set_header X-Real-IP $remote_addr; } }
这里的关键部分是/assets URI空间。 你的可能会有所不同,因为你完全独立的打包你的AngularJs应用程序。 我的角度应用程序是在Play应用程序的/app/assets/JavaScripts文件夹中。 这有利有弊(我很喜欢你把它完全分开的想法)。 我用/assets块做的事情是允许Nginx直接提供静态内容,因为当Nginx做的不错的时候,Play似乎很愚蠢。
在你的场景中,这与你的场景没有太大的关系,但是对于那些在Play中具有一切的人来说,对于上面的服务 – 静态资产策略的工作,部署过程需要从由play dist的存档中解压public目录,像这样摘自我的bash部署脚本):
unzip lib/$SERVICE_BASE_name.$SERVICE_BASE_name-$VERSION.jar "public/*"
对于您的特定情况,下面的内容可能是一个好的开始:
server { Listen 80; location /API { proxy_pass http://localhost:9000; proxy_set_header X-Real-IP $remote_addr; } location / { alias /app/live/my-angularJs-app-here/active/public; } }
总结以上是内存溢出为你收集整理的部署应用程序的解耦前端+后端全部内容,希望文章能够帮你解决部署应用程序的解耦前端+后端所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)