Articles of 虚拟主机

在具有多个域的相同服务器上托pipePHP和Node.js应用程序

我有一个Linode VPS,目前运行lighttpd来服务我的PHP网站,并在端口80上侦听。 我也运行Node.js,它侦听端口81,并使用websockets和HTTP与客户端进行交互。 有几个不同的域我想指向这个服务器。 理想情况下,我希望托pipePHP站点的域都与同一个lighttpd服务器交谈,而使用node.js的站点会以某种方式redirect到端口节点.js正在监听客户端不知道的情况(例如,没有30xredirect)。 example-php1.com:80 -> linodebox:80 lighttpd /var/www/example1 example-php2.com:80 -> linodebox:80 lighttpd /var/www/example2 example-node.com:80 -> linodebox:81 node.js 有没有办法做到这一点,无论是通过设置DNS条目或调整iptables? lighttpd是否需要成为node.js的代理? websocketsfunction需要在没有任何回退的情况下工作,访问非节点域(例如example-php1.com:81 )不应公开节点应用程序。 我觉得完美的解决scheme不需要改变现有的应用程序代码,也不需要在软件Web服务器之间进行代理,但我可能是错的。

监听主进程上的HTTP通信,处理subprocess上的连接?

我正在寻找一种方法来让套接字监听主进程上的HTTP请求,然后使用process.send()将所有传入连接和请求数据传递给subprocess,并在subprocess中处理HTTP请求。 但是,我无法find一种方法来将传递的连接和请求数据附加到subprocess中的HTTP服务器,而无需通过.listen()套接字初始化服务器。 那么,是否有可能使用HTTP服务器来处理从另一个进程传入的连接呢? 任何非公开的API解决scheme也将做(尽pipeJavaScript的希望尽pipe)。 我想我可以初始化服务器来侦听一些虚拟套接字,然后popup传入的连接,但这似乎并不理想。 传入监听套接字或使用群集或反向代理也不是最佳的在我的情况。

在同一台机器上运行Node.js应用程序和PHP

我真的很困惑,这是否有可能? 请帮助我,我有Node.js应用程序,说node_app,运行在X端口,PHP应用程序,说my_app,运行在Apache的默认80端口。 我只有一个域名。 我的问题是,如果用户点击domain.com/my_app ,它应该在80年代的端口运行PHP应用程序。 如果用户访问domain.com/node_app ,则应该在X端口运行节点应用程序。 另一个重要的限制是最终用户不应在URL栏中看到任何端口号 。

使用具有节点webapp的虚拟主机的logging器

我有一些低stream量的网站,我试图设置一个简单的方法,将独立节点应用程序转换成可以通过使用vhost在单台机器上为多个域提供服务的主应用程序require()东西。 这很有用,因为如果我不需要破解它,我可以轻松地将这些应用程序拆分回专门的部署。 我注意到,当我有两个应用程序都使用morgan做logging,只有第二个虚拟主机应用程序注册产生logging器输出。 我想我知道发生了什么事情,但弄清楚这一点并没有什么坏处。 由于这两个虚拟应用程序添加logging器作为中间件,我的猜测是,第一个应用程序绑定到标准输出,第二个应用程序,所以现在还不是很清楚第一个会发生什么,但可以肯定的是没有真正的机制来处理这种情况。 我希望有一种解决办法,就是从各个应用程序中取出日志logging,并将一个logging器放在vhost条目的前面(这有效地将我的完整应用程序转换为中间件),这样我仍然可以看到所有点击我的服务器上。 但是,这样做会阻止我能够做这样的事情,例如不logging这些应用程序中的特定应用程序中由静态中间件处理的任何请求。

在Express上使用VHOST子域名

我有2个分离的网站(静态networking和应用程序)。 我试过使用Express vhost中间件,但是我无法pipe理。 对于下面的代码,我configuration我的hosts文件为; 127.0.0.1 localhost 127.0.0.1 process.localhost 我的server.js代码 var connect = require('connect') var express = require('express') var vhost = require('vhost') var app = require('./app') var static = require('./static') var server = connect() server .use(vhost('localhost', static.service)) .use(vhost('process.localhost', app.service)) .listen(1337, function(){ console.log('Server is listening') }) 然后,如果我写我的地址栏localhost:1337静态页面来这是很好的。 但是,如果我写入process.localhost:1337什么也没有。 我该怎么办? 编辑 如果我在编写地址栏localhost:1337 console write localhost:1337时添加以下中间件到我的代码中,但是我写入process.localhost:1337 console什么都不写。

Express的多个证书/虚拟主机

在Cody-CMS中使用Express +虚拟主机,现在我已经使用了多个主机的nodejs。 现在我想包括虚拟HTTPS服务器。 SNICallback被调用,但它结束在那里…我的Express应用程序“exp”永远不会被调用(即使我使用一个简单的函数在注释中将其replace为createServer)。 我得到“请求:site1.com”(或site2.com),但没有任何返回给浏览器。 对于http服务器来说,它是完美的。 任何帮助是受欢迎的。 "use strict"; var express = require("express"); var vhost = require("vhost"); var fs = require("fs"); var app1 = express(); app1.all("/", function(req, res) { res.send('Hello World, site #1'); }); var app2 = express(); app2.all("/", function(req, res) { res.send('Hello World, site #2'); }); ////////////////// // certificates // ////////////////// var crypto = […]

子文件夹中的多节点应用程序

我想创build一个这样的网站: –mysite.com –mainserver.js —–mysite.com/project1 —–server.js —–mysite.com/project2 —–server.js 在每个项目文件夹中我想运行一个单独的节点应用程序。 我试图做到这一点使用虚拟主机模块。 在我的mainserver.js我有这个testing: var express = require("express"); var app = express(); var router = express.Router(); var vhost = require('vhost'); var app2 = express(); app2.get('/', function(req, res) { res.send("echo"); }); app.use(vhost('localhost/project1', app2)); app.get('/', function(req, res) { res.send("hi"); }); var port = Number(process.env.PORT || 5000); app.listen(port, function() { //console.log("Listening on […]

与express.vhost一起使用通配符

express.vhost是否能够支持通配符来捕获一个特定域的所有stream量? 我正在寻找每个子域名(www.example.com,xyz.example.com)和TLD本身(example.com)。

NodeJS Express vhosts和更新app.js

我只是设置了一个NodeJS服务器,并希望使用Express的vhostfunction来实现简单的项目设置。 我希望能够为新项目创build一个新的目录,而不需要经过创build新的子域名的麻烦。 基本上,我希望能够到达node.domain.com/project1 project1和node.domain.com/project2的node.domain.com/project2 。 我现在正在运行位于根( node.domain.com/server.js )中的server.js ,并包含: var express = require('express'); var app = express(); app .use(express.vhost('node.domain.com', require('./project1/app.js').app)) .use(express.vhost('node.domain.com', require('./project2/app.js').app)) .listen(3000); 这一切工作正常,当我去node.domain.com/project1我得到node.domain.com/project1的结果,但每当我改变任何app.js文件中的东西,它需要重新启动( Ctrl+C后由node server.js )为它更新更改。 而app.js的内容是,例如: var express = require('express'); var app = exports.app = express(); app.get('/project1', function(req, res){ res.send('Hello World [/project1]'); }); 任何想法,为什么这是? 需要注意的一点是,我也在同一台服务器上运行Apache,而且我正在使用本指南来允许两台服务器在端口80上运行(但可通过不同的子域访问)。

nodejs socketio多个域(单独的io)

我创build了2个网站,使用socketio + nodejs(+ 2开发网站)。 现在,我需要将这两个网站移到一个服务器上。 为了做到这一点,我使用了express-vhost,它适用于所有的东西,除了socket.io。 在我的应用程序中,我使用了几百次以下的函数。 socket.emit(), io.sockets.emit() , socket.broadcast.emit()等等。 当我创build网站,我第一次使用socketio,并正在学习它。 因此,我从来没有使用名称空间(还没有使用它们)。 现在,当我在vhost下运行这两个站点时,有人连接到site1,他们也连接到site2,因为他们使用相同的socket.io实例。 所以,我试图创buildsocketio的多个实例,每个域的一个,像这样 http = server.listen(80);//my vhost main app global.io_for_domain_1 = require('socket.io')(http, {'transports': ['websocket', 'polling']} ); global.io_for_domain_2 = require('socket.io')(http, {'transports': ['websocket', 'polling']} ); /*And then, in my domain app, i was hoping to simply swap out the reference for io like so …in […]