使用Node、Express、Ghost和http-proxy来防止重复请求

3

我已经使用“npm install ghost”方法设置了Ghost,并使用子目录方法在现有的Express服务器上托管它,托管地址为/blog

app.all("/blog*", function(req, res){
  blogProxy.web(req, res, { target: 'http://localhost:2368' });
});

一切都很正常,但是每个请求都会被复制,这很烦人。这是/blog的单页面加载:

GET /blog/ 304 29.521 ms - -
GET /blog/ 304 31.080 ms - -
GET /blog/assets/css/screen.css?v=02ca13e45a 304 7.910 ms - -
GET /blog/public/jquery.js?v=02ca13e45a 304 4.262 ms - -
GET /blog/assets/js/jquery.fitvids.js?v=02ca13e45a 304 4.179 ms - -
GET /blog/assets/js/index.js?v=02ca13e45a 304 2.844 ms - -
GET /blog/assets/css/screen.css?v=02ca13e45a 304 11.546 ms - -
GET /blog/public/jquery.js?v=02ca13e45a 304 11.506 ms - -
GET /blog/assets/js/jquery.fitvids.js?v=02ca13e45a 304 11.655 ms - -
GET /blog/assets/js/index.js?v=02ca13e45a 304 11.786 ms - -
GET /blog/assets/fonts/casper-icons.woff 304 0.954 ms - -
GET /blog/assets/fonts/casper-icons.woff 304 2.180 ms - -

我认为这是由代理服务器将请求从主要端口转发到2368端口引起的,这是设计上的吗?有没有办法避免这种情况?

我可能在我的服务器配置中有其他app.use操作导致了这个问题,但我还没有能够确定。


嘿,詹姆斯 - 你解决了这个问题吗?我正在排除完全相同的问题(使用相同类型的子目录配置),这似乎是我能找到的唯一提到这个问题的地方。 - nlh
有一点代码,所以我会在回答中进行。 - James Gentes
1个回答

2

回顾一下,以下是我认为解决了问题的更改内容:

最初,我的Node路由处理所有非博客请求Ghost之前。

我相信解决方案是将这些更改为博客代码在app.get('/*')之前执行:

// Frontend Blog
ghost({
  config: __dirname + '/app/frontend/ghost/config.js'
}).then(function (ghostServer) {
  ghostServer.start(parentApp);
});

// Backend App      
app.get('/*', function (req, res, next) {       
  res.sendFile("app.html", {root: __dirname + config.path});        
});

同时,初始的 app.all("/blog*") 代码位于我的服务器配置文件的顶部,在 bodyparser 之上。 - James Gentes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接