使用Node.js实现一个简单的FastCGI服务器实例
本文是我最近对Node.js学习过程中产生的一个想法,提出来和大家一起探讨。
Node.js的HTTP服务器
使用Node.js可以非常容易的实现一个http服务,最简的例子如官方网站的示例:
varhttp=require('http');
http.createServer(function(req,res){
res.writeHead(200,{'Content-Type':'text/plain'});
res.end('HelloWorld\n');
}).listen(1337,'127.0.0.1');这样就快速的搭建了一个监听在1337端口所有http请求的web服务。
但是,在真正的生产环境中,我们一般很少直接使用Node.js作为面向用户的最前端web服务器,原因主要有以下几种:
1.基于Node.js单线程特性的原因,其健壮性的保证对开发人员要求比较高。
2.服务器上可能已有其他http服务已占用80端口,而非80端口的web服务对用户显然不够友好。
3.Node.js对文件IO处理并没太大优势,如作为常规网站可能需同时响应图片等文件资源。
4.分布式负载场景也是一个挑战。
所以,使用Node.js作为web服务更多可能是作为游戏服务器接口等类似场景,大多是处理不需用户直接访问且仅作数据交换的服务。
基于Nginx作为前端机的Node.jsweb服务
基于上述原因,如果是使用Node.js搭建的网站形的产品,常规的使用方式是在Node.js的web服务前端放置另一个成熟的http服务器,如最常使用的是Nginx。
然后使用Nginx作为反向代理访问基于Node.js的web服务。如:
server{
listen80;
server_nameyekai.me;
root/home/andy/wwwroot/yekai;
location/{ proxy_passhttp://127.0.0.1:1337; }
location~\.(gif|jpg|png|swf|ico|css|js)${ root/home/andy/wwwroot/yekai/static; } }
热门推荐
1 训练狗狗憋尿
2 狗狗追踪训练
3 狗狗训练要多少钱
5 深圳狗狗训练
6 训练狗狗唤回
7 狗狗叫怎么训练
8 狗狗训练班
10 狗狗社会化训练
11 狗狗叫回训练
12 广州狗狗训练学校
13 狗狗训练躺下
14 狗狗随行训练
15 训练狗狗巡回
16 狗狗要怎么训练
17 狗狗喂食训练
18 训练狗狗躺下