【问题标题】:Run a custom function when using the routing table on a reverse proxy with node-http-proxy在带有 node-http-proxy 的反向代理上使用路由表时运行自定义函数
【发布时间】:2025-12-03 12:15:03
【问题描述】:

我发现使用 node-http-proxy 将子目录路由到本地服务器上的不同端口很容易。但是,我还没有发现在进行路由时是否可以运行自定义函数。我想做的是:

  1. 如果目标端口上的服务没有运行,启动它,然后完成路由
  2. 如果服务已经在目标端口上运行,就做路由

我不是在问如何检查服务并启动它,而是在每次重新路由发生时如何调用一个函数。

我可以这样做吗?

var options = {
    route: {
        '/task1' : customFunc('3000'),
        '/task2' : customFunc('3001'),
    }
}

httpProxy.createServer(options).listen(80);

【问题讨论】:

    标签: node.js proxy node-http-proxy


    【解决方案1】:

    您不能将函数指定为路径值,因为该值被解析为 URL。 See here.

    相反,您可以做的是在请求到达路由器之前拦截请求,根据需要启动服务,然后将请求转发回路由器:

    var init = function(req, res, next){
        if(req.url.indexOf('task1') > -1 && !serviceIsRunning()){
            startService();
            next(); // forward req back to router
        } else {
            // no need to do anything, move request along
            next();
        }    
    }
    
    httpProxy.createServer('localhost', options, init).listen(80);
    

    【讨论】:

      最近更新 更多