栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何与node-http-proxy一起使用虚拟主机?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何与node-http-proxy一起使用虚拟主机?

我从来没有想过Haibu或Cluster。但是我确实找到了解决我问题的好的解决方案。令我惊讶的是,这实际上非常简单。但是,我对服务器了解不多,因此虽然可行,但这可能不是最佳选择。

我在Apache上像往常一样设置了虚拟主机(http://httpd.apache.org/docs/2.0/vhosts/examples.html)

我在Node上安装了以下内容

  • Express(http://expressjs.com/)
  • node-http-proxy(https://github.com/nodejitsu/node-http-proxy)

然后,出于个人风格,我将所有虚拟主机都放在一个公共目录(/ localhost)中

然后,我切换了Apache以侦听端口80以外的其他端口。我刚巧选择了端口9000,因为我看到它在某个地方使用过。(在httpd.conf中,将“
Listen 80”更改为“ Listen 9000”)。我还必须确保将我在Extra / httpd-
vhosts.conf中定义的所有虚拟主机都设置为基于IP的名称VirtualHost(127.0.0.1),而不是使用端口(*:80)。

在“节点”端,我创建了我的应用程序/服务器(也称为节点虚拟主机),该应用程序/服务器在端口8000上侦听(以某种方式任意选择端口号),请参见以下使用Express创建服务器的链接:http
//expressjs.com/guide。 html

然后,在我的/ localhost目录中,创建了一个名为“ nodeHttpProxy.js”的文件。

然后,在nodeHttpProxy.js中,使用node-http-
proxy创建了一个侦听端口80的代理服务器。使用express来包装连接(http://www.senchalabs.org/connect/),创建了虚拟主机。

nodeHttpProxy.js文件如下所示:

// Module dependanciesvar httpProxy = require('/usr/local/lib/node_modules/http-proxy/lib/node-http-proxy'), express = require('/usr/local/lib/node_modules/express/lib/express');// Http proxy-serverhttpProxy.createServer(function (req, res, proxy) {    // Array of node host names    var nodeVhosts = [        'vhost1'        , 'vhost2'    ]    , host = req.header('host')    , port = nodeVhosts.indexOf(host) > -1        ? 8000        : 9000;    // Now proxy the request    proxy.proxyRequest(req, res, {        host: host        , port: port    });}).listen(80);// Vhosts serverexpress.createServer().use(express.vhost('vhost1', require('./vhost1/app'))).use(express.vhost('vhost2', require('./vhost2/app'))).app.listen(8000);

如您所见,每次创建新的Node虚拟主机时,我都必须做两件事:

  1. 将虚拟主机名添加到我的“ nodeVhosts”数组中
  2. 使用.set方法定义新的快速虚拟主机

当然,我还必须在/ localhost目录中创建实际的主机路径/文件。

一旦完成所有这些,我只需要运行nodeHttpProxy.js:

node nodeHttpProxy.js

您可能会收到一些奇怪的“ EACCESS”错误,在这种情况下,只需以sudo身份运行即可。

它将侦听端口80,并且如果主机与nodeVhosts数组中的名称之一匹配,它将把请求转发到端口8000上的该主机,否则它将请求转发到该端口9000上的主机。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/425787.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号