Apache JS中的Apache

时间:2016-04-12 15:33:51

标签: node.js wordpress apache

这个伟大的主题解释了如何在Apache服务器中使用ProxyPass将所有与路由/node匹配的内容转发到端口:8080,其中有一个Node JS服务器在运行:

Apache and Node.js on the Same Server

现在我想知道是否有类似的方法可以做到这一点。

NodeJS服务器同时运行:80和:8080。但是,如果路线与/blog匹配,则应显示我的wordpress安装。

由于业务人员设置了我们的域名系统(argh),这是我能想到的唯一选择 - 子域名不起作用。

2 个答案:

答案 0 :(得分:2)

您可以根据NodeJS http侦听器传递的URL,始终让NodeJS向正在运行的Apache服务(套接字)发出内部HTTP请求;然后相应地通过http响应反馈结果。

以下是有关如何使用NodeJS发出http请求的优秀文章:https://davidwalsh.name/nodejs-http-request

概要

所以,如果你有Apache运行,即:IP&端口(套接字)127.0.0.1:4321你可以像这样对Apache进行NodeJS中继请求:(只是一个例子)

var http = require('http');

http.createServer(function (nreq, nrsp)
{
    if (nreq.url.indexOf('/blog') > -1)
    {
        http.get('http://127.0.0.1:4321', function(arsp)
        {
            arsp.on('data', function(data)
            {
                nrsp.write(data);
            });
        });
    }
    else
    {
        // your nodeJS web server stuff here
    }
}).listen(8080);  // or port 80, but this requires root privilege 

答案 1 :(得分:0)

虽然有可能我真的不推荐这个。

Web服务器(如Apache)非常擅长成为Web服务器。它们内置了许多安全性和性能选项。它们适用于静态内容。他们不擅长的是运行动态代码(他们主要委托给PHP或其他CGI脚本或代理传递给Node等特定服务器)。节点是相反的。

Node当然可以创建一个Web服务器,并且有一个很好的社区,围绕它不断致力于性能和安全性以及新功能。但这并不意味着成为主要的Web服务器必然是一个好主意 - 特别是当你必须安装一个“真正的网络服务器”(原谅明确的节点开发人员!)时,无论如何。

对于Node,您基本上必须编写代码来创建Web服务器(使用像Express这样的库)。对于Web服务器,代码已编写,您必须编写配置文件。一个微妙的区别可能是一个重要的区别,有很多好处(配置的语法检查,经过尝试和信任的解决方案,所有配置选项的文档......等等。)

此外,Node非常擅长创建微服务 - 因此让许多节点服务在不同的端口上进行侦听,然后在前面安装一个Web服务器以将它们集中在一起和/或处理https终止。是的,你可以让一个节点服务器在前面执行该功能,而不是Apache,但我仍然建议使用一个网络服务器。