前端时间以为系统的需要,就弄了个lighttpd,主要是使用flowplayer和lighttpd搭建一个在线的flv流媒体播放功能。而且lighttpd也是有mod_flv_streaming模块来支持flv视频的流播放功能,不过我也是只是简单的使用了其中的功能,并不是很深入,但是入门还是可以的。
首先就是lighttpd的安装了,lighttp的安装需要pcre-7.6.tar.gz,主要是正则式的解析,安装包如下:
1.pcre-7.6.tar.gz (http://www.pcre.org/)
2.lighttpd-1.4.19.tar.gz (http://www.lighttpd.net/download/)
一、安装pcre和lighttpd
二、lighttpd的简单配置和主要参数说明
#vi /usr/local/lighttpd/etc/lighttpd.conf
server.modules 根据需要启动模块
server.document-root 改为你的网站的根目录(如/www)
server.errorlog 改为错误日志的路径(如/usr/local/lighttpd/logs/error.log)
accesslog.filename 改为访问日志的路径(如/usr/local/lighttpd/logs/access.log)
三、启动lighttpd
#/usr/local/lighttpd/sbin/lighttpd -f /usr/local/lighttpd/etc/lighttpd.conf
然后我们在/www下建立一个index.html,输入hello,然后访问该服务器即可看到该页面,即表明lighttpd安装成功!
lighttpd的命令如下:
#/usr/local/lighttpd/sbin/lighttpd --help
-f <name> 指定配置文件的路径
-m <name> 指定模块的加载目录,默认是/usr/local/lighttpd/lib
-p 在屏幕上显示解析后的配置文件信息(运行信息),要指定-f参数
-t 检测配置文件的正确行,要指定-f参数
-D 设置lighttpd非后台运行,默认是后台运行
-v 显示lighttpd的版本
-V 显示lighttpd的编译时特性信息
-h 显示帮助信息,同--help
四、lighttpd的模块配置
lighttpd按照上面的安装步骤后,其所有模块都已经安装在/usr/local/lighttpd/lib目录下了,我们设置在server.modules中的模块名称和lib目录下的模块文件的名称一致即可,如mod_secdownload.so就是表示mod_secdownload模块。我们可以在server.modules的列表中增加mod_secdownload来使lighttpd支持mod_secdownload。另外还可以使用这样的语法来增加模块:server.modules += ("mod_secdownload")
1)rewrite 模块配置
如果要配置rewrite模块,则直接在lighttpd.conf文件中书写:
url.rewrite-once = (
"^/show-([0-9]+)\.html" => "$1.html",
"^/v/show-([0-9]+)\.html" => "$1.html"
)
如果有多个,则使用,分割开写即可,如上说述!另外还有url.rewrite-repeat等方式,请参看文档http://trac.lighttpd.net/trac/wiki/Docs%3AConfigurationOptions!其基本的正则式和apache的rewrite模块基本一样,只是书写形式不一样而已。比如按照上面的rewrite规则,我们在www目录下建立文件:123.html,然后访问:http://localhost:8080/show-123.html即可以访问到123.html这个文件了,和直接访问:http://localhost:8080/123.html是一样的效果。
2)secdownload 模块配置
secdownload是安全下载模块,其主要原理就是根据时间戳来判断请求是否已经超时了,如果超过了指定的时间那么将不允许访问指定的资源,否则就是可以访问。其在lighttpd.conf文件中的配置如下:
secdownload.secret = "my-password"
secdownload.document-root = "/home/my-download/"
secdownload.uri-prefix = "/rs/dl/"
secdownload.timeout = 60
先来说下lighttpd针对该模块的url要求,如果使用lighttpd的secdownload模块,那么其请求的url地址必须满足特定的要求才可以,其要求的url格式如下:
<uri-prefix>/<token>/<timestamp-in-hex>/<rel-path>
其url地址由四个部分组成,分别说明如下:
1.<uri-prefix>:配置文件中secdownload.uri-prefix指定的前缀;
2.<token>:是由配置文件中指定的secdownload.secret加要下载的文件的路径(必须以/开头)加时间戳三者连接后的MD5加密后的字符串,注意官方网站上提供的例子是php的,其中php的time()获取的就是从1970年到当前的标准时间(单位是秒)的8进制表示形式,如果是使用java的话,那么可以通过如下代码来获取:
因为System.currentTimeMillis()获取的是毫秒,所以应该除1000,这样才可以。比如我要下载的文件的文件存放路径为:/home/my-download/aa.txt。注意到这里的路径前缀就是配置文件中的secdownload.document-root的值,最好是将secdownload.document-root的值设置在当前lighttpd的server.document-root目录之外,这样就可以避免直接下载了。那么针对这个文件动态生成token的java代码就应该是如下了:
其中Encrypt.MD5是我自己的一个MD5加密方法,大家可以自己写一个,注意该方法中三个部分我是分开写的,第一个就是我们在lighttpd配置文件中设置的secdownload.secret,第二个就是我们要下载的文件名称(包括路径),是相对secdownload.document-root的路径而言的,第三个部分就是我们获取到的当前的时间戳了。这样我们就可以动态的生成了一个满足lighttpd要求的token。
3.<timestamp-in-hex>:就是我们刚才生成的时间戳,即上面的timestamp了;
4.<rel-path>:这个就是我们要下载的文件,也就是aa.txt了。
配置文件中secdownload.timeout是用来校验时间戳在多长时间后失效的,我们这里设置的是1分钟,即60秒。这表明,从我们生成下载地址后的60s内如果没有人点击这个地址那么该链接就将失效。这样也就可以基本防止文件被随意下载了。
3)mod_proxy 代理模块配置
该模块主要是用来连接lighttpd和动态服务器的,如tomcat,在配置文件中输入如下:
$HTTP["url"] =~ ".jsp|.go|.do|action" {
proxy.balance = "fair"
proxy.server = ( "" => ( ( "host" => "127.0.0.1", "port" => 8080 ),("host" => "127.0.0.1", "port" => 18080) ))
}
其中host字段表示代理服务器的配置(ip和端口),如果有多个则可以配置负载服务器,这里配置的是两个。proxy.loadblance用来做负载,具体的没有研究过,大家可以参看官方文档详细了解下。
这里主要简单的说了lighttpd的安装部署和简单模块的使用,希望可以和大家一起相互交流~~~