如何将不同的子域指向同一服务器上的不同应用程序? (使用node.js作为代理吗?)

时间:2013-12-14 06:11:12

标签: node.js apache web subdomain

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

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

研究表明我可以使用Apache作为这个代理,但如果我不需要,我会更喜欢它。如果我能以某种方式使用node.js来做到这一点,那将是非常棒的(我的首选解决方案)。如果那是不切实际/不可能的,那么当然我对其他想法持开放态度。

我真的很感激如何做到这一点。

2 个答案:

答案 0 :(得分:1)

浏览this thread

虽然它讨论了使用http-proxy和< = 0.8.x上的WebSockets的一些问题,如果你不这样做,你应该没问题。

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

var http = require('http'),
    httpProxy = require('http-proxy');

httpProxy.createServer(8888, 'localhost').listen(80);

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

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

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

答案 1 :(得分: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提供服务。