用到的时候是安装习惯从 Google 先找了 Nginx 的方案先拼凑了一个脚本用着,
http://stackoverflow.com/questions/50...
但是否还有别的方案, 比如不借助 Nginx, 直接用 Node,
比方应用监听8000
端口, 服务器有域名abcd.in
, 想运行到app.abcd.in
这样,
有哪些方案可以行得通?
你可以使用connect.js的vhost或者express.js(基于connect.js)。
var connect = require('connect'), http = require('http'); // 其他的require... var vhost1 = connect.vhost( 'www.example.com', connect.createServer(...) ); var vhost2 = connect.vhost( 'bbs.example.com', http.createServer(...) // http.server也可以 ); connect.createServer( connect.logger(), vhost1, vhost2 ).listen(8888);
用nginx做proxy的方案更好,更灵活。
你也可以在node.js程序内部判断host:
app.get('some_route', function(req, res) { var host = req.header('host'); // 然后针对host做处理 });
你需要使用web server为你的node程序做Proxy
相当于在web server上建立虚拟主机之后,转发所有请求到node程序监听的端口
以你的域名举例 app.abcd.in --> 本地8000端口(Node App),假设我安装了apache
<VirtualHost *:80> ServerAdmin webmaster@dummy-host.example.com DocumentRoot "/你的应用目录/" ServerName app.abcd.in ServerAlias app.abcd.in ErrorLog "/你的应用目录/logs/error.log" CustomLog "/你的应用目录/logs/access.log" combined ProxyPass / http://app.abcd.in:8000/ </VirtualHost>