用NodeJS/express-4.0实现的静态文件服务器(serveStatic插件直接支持HTTP Range请求,因此可用来做mp4流媒体服务器)
2017-08-16 23:30
786 查看
var express = require('express'), serveIndex = require('serve-index'), //只能列表目录,不能下载文件? serveStatic = require('serve-static') ; /* $ brew install node@8.4.0 不使用package.json的依赖安装方法:以全局模式(-g)安装npm依赖,然后npm link命令创建符号链接 $ npm install express -g $ npm link express */ var LOCAL_BIND_PORT = 3000; //express's port var app = express() app.set('x-powered-by', false) app.set('strict routing', true); //路径/a与/a/是不一样的(但是/a/*需要单独指出吗?) app.set('trust proxy', true); //与Nginx反向代理配合使用? //Trick: app.getOrPost = function(urlPattern, callback){ app.get(urlPattern, callback); app.post(urlPattern, callback); } var REQUEST_GLOBAL_NUM = 1; app.use(function requestNumbering(req, res, next){ var this_request_id = REQUEST_GLOBAL_NUM++; //for dump data file naming; req.request_id = (""+this_request_id).padStart(10, "0") next() }) app.use(function addServerSideIPAddress(req, res, next){//log输出req.headers,FIXME:怎么log输出最终的res.headers? //console.log("["+req.request_id+"] logReqHeaders: req.ip=" + req.ip+" req.socket.localAddress="+req.socket.localAddress); //req.socketLocalIPv4Address = req.socket.localAddress.replace("::ffff:","").replace("::1","127.0.0.1") //dirty hack to fix OS IPv6-first to use IPv4 address only console.log("["+req.request_id+"] req.headers: "+JSON.stringify(req.headers, null, 2)); next(); }) //目录列表及静态文件下载 app.get("/", function(req, res){ res.redirect(302, "/f"); //test direct; }); app.use('/f', serveIndex('/Users/chenzhixiang/', {'icons': true})) //This is Mac OS fs path; var serve = serveStatic('/Users/chenzhixiang/') app.get('/f/*', function(req, res){ req.url = req.url.substring(2); //跳过url中的/f前缀,把剩余的部分映射为相对于/home/chenzx的文件路径 console.log("["+req.request_id+"] GET static "+req.url); serve(req, res) }); console.log(`Start static file server at ::${LOCAL_BIND_PORT}, Press ^ + C to exit`) app.listen(LOCAL_BIND_PORT)
serve-index插件默认生成的列表视图不是那种详情列表模式的。
相关文章推荐
- npm scrpit/node实现静态资源(js/css)复制重命名(版本号)、压缩tar.gz、上传至服务器
- node.js实现本地http请求
- node和express分别实现静态文件服务器
- 第8章-使用Express.js和Hapi构建Node.js-REST-API服务-8.3.使用Express和Mongoskin实现REST API服务器
- Node.js与网络:Node.js对TCP、UDP、Socket、HTTP等协议的实现和支持
- 使用 Node.js 和 Express.js 搭建简易 HTTP/2 服务器
- 安装nodeJs静态服务器(NodeJs Express MVC 框架)
- Node.js用6行代码1个JS文件搭建一个HTTP静态服务器
- Node.js与网络:Node.js对TCP、UDP、Socket、HTTP等协议的实现和支持
- 为node.js服务器添加静态网页,express模块。
- Node.js —— 使用express模块创建静态web服务器及其路由
- [译] 通过 Node.js, Express.js 实现 HTTP/2 Server Push
- 用http-server 创建node.js 静态服务器
- Node.js静态服务器的实现方法
- 【Node.js-3】express介绍、express-static处理静态文件请求、链式操作next()、中间件、cookie、session
- Node.js用6行代码1个JS文件搭建一个HTTP静态服务器
- 基本Web服务器的实现——Node.js实现响应浏览器请求
- Node.js —— 使用http模块创建静态web服务器及其路由
- [译] Node.js, Express.js 搭建 HTTP/2 服务器
- HttpHelps类,用来实现Http访问,Post或者Get方式的,直接访问,带Cookie的,带证书的等方式,可以设置代理