【问题标题】:Ghost in a subdirectory and over node-http-proxyGhost 在子目录和 node-http-proxy 上
【发布时间】:2014-01-29 04:33:07
【问题描述】:

我正在尝试在另一个 nodejs/express 应用程序的子目录中设置 Ghost 博客程序 (v0.4)。我能够按照此处概述的步骤使其工作:Node http-proxy and express

因此,我通过 Express 将代理从我的主应用程序设置为 Ghost,如下所示(在我的开发机器上):'

var proxy = new httpProxy.createProxyServer();
server.get('/blog*', function (req, res, next) {
    proxy.web(req, res, {
        target: 'http://localhost:2368'
    });
});

这适用于访问博客内容。但是,当我转到 /blog/ghost/signin 并尝试登录时,我得到了 404。据我所知,登录页面不会出现在 blog/ 目录之外的任何地方,那为什么会失败呢?

如果我直接查看博客(在端口 2368 上),我可以正常登录。

【问题讨论】:

    标签: node-http-proxy ghost-blog


    【解决方案1】:

    您只为 GET 定义了一个路由,因此您只是代理 GET 请求,但登录和注册使用 POST 请求。通常 Apache 或 nginx 中的代理规则将代理给定 url 的所有允许方法,但由于您通过方法定义处理程序,这不会发生。

    注册 POST 得到 404,因为它由您的第一个节点应用程序处理,该应用程序不知道该做什么。

    除了 POST 之外,您还需要 DELETE 方法才能单击通知消息并删除帖子。我不确定是否还需要其他方法(选项),GET、POST 和 DELETE 是我观察到的唯一方法,如果您查看页面所做的请求,您将看到哪个方法失败,例如使用 Firebug。

    要解决此问题,请添加您使用 get 添加的相同处理程序以用于发布、放置和删除:

    server.post('/blog*', function (req, res, next) {
        proxy.web(req, res, {
            target: 'http://localhost:2368'
        });
    });
    server.delete('/blog*', function (req, res, next) {
        proxy.web(req, res, {
            target: 'http://localhost:2368'
        });
    });
    server.put('/blog*', function (req, res, next) {
        proxy.web(req, res, {
            target: 'http://localhost:2368'
        });
    });
    

    这样,管理界面就可以正常工作了。

    【讨论】:

    • 谢谢,这让我更进一步。但是,现在当我尝试登录时,Express 服务器会旋转一段时间,然后因错误而死:Error: socket hang up at createHangUpError (http.js:1472:15) at Socket.socketCloseListener (http.js:1522:23) at Socket.EventEmitter.emit (events.js:95:17) at TCP.close (net.js:466:12) 我正在登录 server.post 调用,所以我知道它已经走了那么远,但我没有看到任何日志记录都是从 Ghost 端发生的。
    • 我解决了。我需要在路由后面加上server.use(express.urlencoded()); server.use(express.json());,然后管理界面开始工作。感谢您的帮助!
    • 您还需要添加一个PUT 路由处理程序。其他一切正常,但设置和用户页面调用PUT 路由。
    • 使用 .all 是否有任何问题,因为您想捕获所有 HTTP 动词? server.all('/blog*', ... 我正在做类似的事情。我看到了管理界面,但它在尝试对用户进行身份验证时挂在套接字错误上。
    猜你喜欢
    • 1970-01-01
    • 2018-08-10
    • 1970-01-01
    • 2013-09-14
    • 1970-01-01
    • 2014-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多