我目前正在开发一个带有节点后端的余烬前端。
在我的ember-cli应用程序中,我将.ember-cli文件设置为代理节点请求:
{
"proxy": "http://localhost:3000"
}
我还必须在contentSecurityPolicy中设置一大堆规则,以避免跨网站问题。
我开始使用ember server
进行ember,并且它成功地将ajax请求代理到我的节点后端 - 尽管它还代理来自其他库(如facebook到节点)的ajax请求(以404s失败)。
余烬内容由http://localhost:4200/
我还有一个直接从节点提供的静态登录页面,我可以通过http://localhost:3000/home
是否有更好的方式来设置它,就像在生产环境中所有内容都是从一个地址提供的?或者我必须在这种孤立模式下发展?
两个应用程序前面的代理可能会起作用,但它仍然需要contentSecurityPolicy的东西,因为从那个角度来看,没有什么不同。
答案 0 :(得分:0)
在我最近的应用程序中,我一直使用Ember.js作为前端,将node.js + express + mongodb作为后端使用。
我正在运行2台服务器 - 端口80上的/dist
目录(静态文件,图像等)的nginx和其他端口上的API的节点服务器。我代理以/api/v1
(动态请求)开头的请求来表达服务器:
upstream app_domainName.com {
server ip.co.me.shere:1234; # port of node.js server running
keepalive 8;
}
location /api/v1/ {
proxy_pass http://app_domainName.com;
proxy_next_upstream error timeout invalid_header http_500 http_502
http_503 http_504;
proxy_redirect off;
proxy_buffering off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
我不想通过快速服务器提供静态文件,因为nginx似乎有更好的性能来处理它们。
答案 1 :(得分:0)
当你运行ember serve时,ember会不断更新它的dist目录并保存每个文件。
我将符号链接ember的dist目录放到我服务器的目录中,然后告诉hapi'/'路由应该回复一个基本上是ember的index.html文件副本的视图,并且还打开一个到/ dist / assets的路由(这是所有你的余烬js代码的地方)。
在终端中,只需打开两个标签,一次运行ember服务,第二次运行服务器。
这可以服务于服务器端口的所有内容,不断更新每个文件。