【问题标题】:How to point different subdomains to different applications on the same server? (use node.js as a proxy?)如何将不同的子域指向同一服务器上的不同应用程序? (使用 node.js 作为代理?)
【发布时间】:2013-12-14 06:11:12
【问题描述】:

我正在设置一个 node.js 服务器,但我也希望同时在那里运行 Apache。 Node 将成为主要网站,并且会有指向 Apache 的子域。

我能想到的唯一方法是让不同的应用程序监听不同的端口,然后让代理应用程序监听端口 80,然后根据使用的子域“重定向”端口。我不确定这是否是正确的方法,或者如果是正确的方法。

研究表明,可以使用 Apache 作为此代理,但如果没有必要,我更喜欢它。如果我能以某种方式使用 node.js 来做到这一点,那就太棒了(我的首选解决方案)。如果那不切实际/不可能,那么我当然愿意接受其他想法。

我非常感谢有关如何执行此操作的一些指导。

【问题讨论】:

    标签: node.js apache web subdomain


    【解决方案1】:

    您想要一个可以同时为 Node.js 和 Apache 提供服务的解决方案,并且您希望让 Node.js 来执行反向代理。但是,最好使用专为反向代理(Nginx、HAProxy)设计的程序来完成这项工作。使用 Node.js 作为反向代理服务器效率会很低。

    Nginx 是我推荐的东西。它简单且高效。您可以将 Nginx 服务器放在最前面,接收所有请求。

    这里是你如何设置 Nginx 来反向代理到 Node

    http://www.nginxtips.com/how-to-setup-nginx-as-proxy-for-nodejs/

    这里是如何设置 Nginx 以反向代理到 Apache

    http://www.howtoforge.com/how-to-set-up-nginx-as-a-reverse-proxy-for-apache2-on-ubuntu-12.04

    只需将两者的设置文件结合起来,就可以同时为apache和node服务。

    【讨论】:

    • 这似乎运作良好。我注意到 Nginx 为我在 Node 服务器上的响应增加了一些延迟(约 50 毫秒)。有什么办法可以降低这个还是我必须接受的?使用 Node 作为反向代理可能会消除这种延迟(但如果我的理解是正确的,它会增加 Apache 方面的延迟)。
    • Nginx 会给你一个开销,但这个开销在很大程度上是恒定的。除非您有严格的实时性能要求要满足,否则我强烈建议您保持当前设置。带节点的反向代理不会给 Apache 端增加更多负载,但是您的节点现在必须在单个线程上同时进行反向代理和服务。你可以做一些 Apache Benchmark 测试来验证设置,但如果可以的话,我建议坚持使用 Nginx。
    【解决方案2】:

    看看this thread

    虽然它讨论了在 http-proxy 和 WebSockets 的一些问题,但如果你不这样做,你应该没问题。

    您可以像这样创建一个非常基本的代理侦听器:

    var http = require('http'),
        httpProxy = require('http-proxy');
    
    httpProxy.createServer(8888, 'localhost').listen(80);
    

    然后像这样创建一个后端服务器:

    var http = require('http').listen(8888);
    

    当然,更复杂的实现可以通过阅读 http-proxy 文档来完成。

    【讨论】:

    • 我在节点 0.10.13 上,将来可能会想要使用一些描述的 Web 套接字,所以为了完全兼容,我将不得不使用他们的 caronte 树。推荐吗?
    • 呃......直到我们让它工作!到目前为止,我们还没有。如果您尝试使用它并使其正常工作,请随时在其他线程上编写解决方案!
    猜你喜欢
    • 2017-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多