我的网站上有很多高清视频,所以我想将视频文件放在Web根目录之外。
这是我的Web根目录:
/var/node/myapp
对于某些基本静态文件,例如 javascript , css ...,我将它们放在公共目录中。
/var/node/myapp/public
对于我要放在此处的视频文件
/hdd/videos
这是我当前投放的静态代码:
app.use(serveStatic(path.join(__dirname, 'public'), {
maxAge: keys.conf.maxAge,
etag: true,
setHeaders: setCustomCacheControl
}));
function setCustomCacheControl (res, path) {
if (serveStatic.mime.lookup(path) === 'text/html') {
res.setHeader('Cache-Control', 'public, max-age=0')
}
}
答案 0 :(得分:1)
您可以设置多个静态目录。示例:
app.use(express.static('public', {etag: true, maxAge: keys.conf.maxAge}));
app.use(express.static('/hdd/videos'));
但是,您提供给express.static函数的路径是相对于您启动节点进程的目录的。如果您从另一个目录运行Express App,则使用您要提供服务的目录的绝对路径更为安全。
here中用于表达静态文件的文档
答案 1 :(得分:-1)
如果要在根Web服务器之外访问目录,则需要通过..
进入目录级别。您没有指定/hdd/videos
相对于根目录的确切位置,但是应该更改为如下所示:
var videosDirectory = __dirname + '/../../hdd/videos';
app.use(serveStatic(videosDirectory, {
maxAge: keys.conf.maxAge,
etag: true,
setHeaders: setCustomCacheControl
}));
function setCustomCacheControl (res, path) {
if (serveStatic.mime.lookup(path) === 'text/html') {
res.setHeader('Cache-Control', 'public, max-age=0')
}
}
答案 2 :(得分:-1)
您可以在generator_next
下创建一个symlink,以指向mikes.custom.iterator
:
在Linux / Unix / OSX上,例如:
/var/node/myapp/public
通过这种方式,您不会暴露整个根目录,并且可以将实际视频的存储位置与服务位置分开,而无需在添加/删除/复制等时复制或移动它们。
当用户点击您的路线/hdd/videos
时,它将按照您的静态路线在ln -s /hdd/videos /var/node/myapp/public/videos
下查找。它将看到/videos
作为链接,并通过该链接到达/var/node/myapp/public
,在那里将提供视频。