sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_balancer
sudo a2enmod proxy_balancer
sudo a2enmod lbmethod_byrequests
# Use Apache for requests to http://example.com/
# but use Node.js for requests to http://example.com/node/
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/example/
<Location /node>
ProxyPass http://127.0.0.1:8124/
ProxyPassReverse http://127.0.0.1:8124/
</Location>
</VirtualHost>
And of course you can modify the directives to your needs, such as using a different port for your virtual host (e.g., 443), different port for Node.js, or set up the proxy under a different block, such as for a subdomain (e.g., node.example.com).
var http = require('http');
var server = http.createServer(function(req, res) {
res.writeHead(200);
res.end('Hello, world!');
});
server.listen(80, '111.111.111.111');
将111.111.111.111替换为您之前从WHM cPanel保留的IP地址。
步骤5
不要再浪费时间了,不要再听那些告诉你使用mod_rewrite来代理Node.js的人的话了。
更新日期:**
We can solve a problem in many different ways and IMHO, we should at least know each possible way 😉. We can do it without buying a new IP of course putting a proxy in front of both Apache and NodeJS server each running other ports except 80.
7条答案
按热度按时间brc7rcf01#
我通过node.js代理完成此操作。
使用
npm
或official page安装http-proxy
示例:
这将创建一个侦听端口80的节点进程,并将域请求转发到:81、82、83等。我建议使用
forever
运行此进程,并向init.d
添加一个条目,以便在系统关闭时启动代理。du7egjpx2#
您还可以使用Apache 2的mod_proxy和mod_proxy_http,这两种方法可能更可靠或性能更好,具体取决于您的系统。
下面是一个例子:
首先对代理运行以下命令以允许
And of course you can modify the directives to your needs, such as using a different port for your virtual host (e.g., 443), different port for Node.js, or set up the proxy under a different block, such as for a subdomain (e.g., node.example.com).
t5zmwmid3#
我个人从@liammclennan.Some suggest的Angular 做了相反的事情,通过Apache代理会破坏Node的一些性能和可伸缩性优势(我自己没有经验,因为我的服务器没有那么多流量,但从@liammclennan的链接:* “通过Apache传入的每个请求都将导致Apache线程等待/阻塞,直到响应从Node.js进程返回。"*,这显然与Node的架构不匹配。)
我使用node-http-proxy大致按照第一个链接中的描述设置了一个Node代理服务器(我的Node代理运行在端口80上; Apache和我的其他Node服务没有)。到目前为止似乎工作得很好,虽然我偶尔会遇到稳定性问题,我已经通过检查代理是否仍在使用cron作业“解决”了这些问题(**edit:**现在看起来稳定多了)。代理相当轻量级,占用大约30 MB内存。
a8jjtwal4#
你不能这样做,你必须在另一个端口运行node.js,然后通过apache代理请求,你可以使用mod_proxy
http://davybrion.com/blog/2012/01/hosting-a-node-js-site-through-apache/
11dmarpk5#
在这种情况下,我通常使用haproxy作为前端,并将其代理到适当的后端服务器(尽管根据需要,将node.js进程设置为代理服务器也是一种有效的方法)。
z9smfwbn6#
用于httpd.conf
激活模块、代理模块和代理http
如果您正在使用虚拟主机
假设你在8080上运行nodejs服务器,你不需要注意nodejs中的ssl,所有的都应该在apache中完成
然后尝试https://api.domain.com/
yzuktlbb7#
我找到了一个很酷的要点Run apache and nodejs on port 80。还没有尝试,但当然会做
步骤1
获取提供2或更多IP地址的VPS。
步骤2
从WHM cPanel中,找到菜单项
Service Configuration
,选择Apache Configuration
,然后单击Reserved IPs Editor
。步骤3
勾选您不希望Apache监听的IP地址,并将其写下来,以便在下一步中使用。单击
Save
。步骤4
安装Node.js,并创建一个如下所示的服务器:
将
111.111.111.111
替换为您之前从WHM cPanel保留的IP地址。步骤5
不要再浪费时间了,不要再听那些告诉你使用
mod_rewrite
来代理Node.js的人的话了。We can solve a problem in many different ways and IMHO, we should at least know each possible way 😉. We can do it without buying a new IP of course putting a proxy in front of both Apache and NodeJS server each running other ports except 80.