以下学习的modules:
mod_userdir
mod_auth
mod_status
mod_proxy
mod_webdav
mod_auth
mod_status
mod_proxy
mod_webdav
一、用户主页配置
例:给用户lyy建立个人主页
1)修改modules.conf ,将userdir.conf前的注释取消
[root@web ~]# vim /etc/lighttpd/modules.conf
## mod_userdir
##
include "conf.d/userdir.conf“
2)将conf.d/userdir.conf修改以下内容
[root@web ~]# vim /etc/lighttpd/conf.d/userdir.conf
userdir.path = "public_html"
3)在lyy用户家目录建立public_html,确保其他用户对lyy家目录有x权限
[root@web ~]# mkdir /home/lyy/public_html
[root@web ~]# chmod o+x /home/lyy/
4)在目录public_html建立测试页面或把你的网页放到这个目录。在浏览器中输入: http://web服务器IP或FQDN/~用户/
PS:修改完成后记得重启服务。
如果想在输入地址时,不需要用~,可通过以下方法去掉~:
[root@web ~]# ln -s /home/lyy/public_html/ /srv/www/htdocs/lyy
二、用户认证配置
1)将mod_auth行前的注释取消
[root@web ~]# vim /etc/lighttpd/modules.conf
server.modules = (
"mod_access",
# "mod_alias",
"mod_auth",
# "mod_evasive",
"mod_redirect",
"mod_rewrite",
# "mod_setenv",
# "mod_usertrack",
)
2)生成密码文件。基本身份验证的认证用户来源可以是普通文本文件、htpasswd工具生成的密码文件等。
[root@web lighttpd]# htpasswd -cm /etc/lighttpd/webuser
3)在auth.conf中增加以下内容:
[root@web ~]# vim /etc/lighttpd/conf.d/auth.conf
- auth.backend = "plain"
- auth.debug = 2
- auth.backend.plain.userfile = "/etc/lighttpd/webuser"
- auth.require = ( "/test/" =>
- (
- "method" => "basic",
- "realm" => "Test Web",
- "require" => "valid-user"
- ),
- )
1.密码文件保存方式为pain普通文本文件。
2.设置调试级别(0是关闭调试信息,1是认证成功信息,2是更详细的调试信息),信息被记录在 access.log和error.log日志文件中
3.密码文件保存路径
4.指定要进行认证目录,/是相对路径为网站根目录,这里为根目录下的test目录。
6.使用基本身份认证
7.用户认证界面提示信息
8.匹配密码文件中的用户
以上是按官方的文档操作,但在我的系统中怎么折腾都没成功。让朋友按这个步骤测试,是成功的,很奇怪,找不到原因。我就改成了以下方法:
1)在modules.conf的配置
server.modules = (
"mod_access",
# "mod_alias",
# "mod_auth",
...
2)不去掉注释,加入以下
## mod_auth
##
include "conf.d/auth.conf"
在auth.conf中加入
- server.modules += ( "mod_auth" )
- auth.debug = 2
- auth.backend = "plain"
- auth.backend.plain.userfile = "/etc/lighttpd/webuser"
- auth.require = ( "/test/" =>
- (
- "method" => "basic",
- "realm" => "Test Web",
- "require" => "valid-user"
- ),
- )
3.测试
三、虚拟主机设定
常规虚拟主机设定简单,可以不需要任何模块支持,直接在lighttpd.conf文件定义
1.基本IP
- $HTTP["host"] == "192.168.209.129" {
- server.document-root = "/srv/www/htdocs/web1"
- server.errorlog = "/var/log/lighttpd/web1-error.log"
- accesslog_filename = "/var/log/lighttpd/web1-access.log"
- }
2.基于端口
- $SERVER["socket"]=="192.168.209.129:8080"{
- server.document-root = "/var/www/htdocs/web2/"
- server.errorlog = "/var/log/lighttpd/web2.log"
- accesslog.filename ="/var/log/lighttpd/web2-access.log"
- }
3.基于主机头
- $HTTP["host"] == "web3.example.com" {
- server.document-root = "/var/www/htdocs/web3/"
- server.errorlog = "/var/log/lighttpd/web3.log"
- accesslog.filename ="/var/log/lighttpd/web3-access.log"
- }
四、服务状态监控
1)将mod_status配置文件的注释取消
## mod_status
##
include "conf.d/status.conf"
2)修改status.conf允许监控的IP段或单个IP
[root@web ~]# vim /etc/lighttpd/conf.d/status.conf
$HTTP["remoteip"] == "192.168.209.0/24" {
3)重启服务后,打开 http://ip/server-status
server-status是状态监控
server-config是配置查看
这个功能默认只要ip允许,就可以查看。如果觉得不安全,可以配合mod_auth做只允许通过验证的用户访问。
五、代理缓存
lighttpd的代理模块,在配置文件中主要有3个选项:
proxy.debug: 代理模块调试级别。目前可使用的参数只有0和1,分别代表启用和禁用.
proxy.balance:使用负载均衡的模式。可以使“hash”,“round-robin”,”fair”三种模式之一。
round-robin 替轮训,
hash 根据请求的url产生一个 hash值,来确保同样的请求的url都访问同样的主机
fair 正常的负载,被动平衡(默认)
proxy.server:把指定的扩展名程序发给特定的服务器处理。
语法结构
- ( <extension> =>
- ( [ <name> => ]
- ( "host" => <string> ,
- "port" => <integer> ),
- ( "host" => <string> ,
- "port" => <integer> )
- ),
- <extension> => …
- )
“host”: 被代理的服务器的ip,不能使用域名
“port”: 被代理服务器的端口,默认是80
例1:将java的请求全都转向给resin来处理
1)将mod_proxy配置文件的注释取消
## mod_proxy
##
include "conf.d/proxy.conf
2)修改proxy.conf
- proxy.server = ( ".jsp" =>
- ( "resin" =>
- (
- "host" => "192.168.209.129",
- "port" => 8080
- )
- )
- )
3)将resin的web主目录修改和lighttpd相同
[root@web ~]# vim /usr/local/resin/conf/resin.xml
4)分别重启lighttpd和resin,在/srv/www/htdocs目录下建立test.jsp
[root@web ~]# vim /srv/www/htdocs/test.jsp
<%@page language="java"%>
100+200=<%=100+200%>
浏览器打开 http://ip/test.jsp
例2:lighttpd在前端做负载均衡,有5个squid做缓存,当一个服务器宕机后,请求转移给其他server。
- $HTTP["host"] == "www.example.com" {
- proxy.balance = "hash"
- proxy.server = ( "" => ( ( "host" => "10.0.0.10" ),
- ( "host" => "10.0.0.11" ),
- ( "host" => "10.0.0.12" ),
- ( "host" => "10.0.0.13" ),
- ( "host" => "10.0.0.14" ) ) )
- }
六、WebDAV
WebDAV使应用程序可直接对Web Server直接读写,并支持写文件锁定(Locking)及解锁(Unlock),还可以支持文件的版本控制。启用webdav功能需要sqlite3和libxml2软件包,在编译时加上--with-webdav-props参数,锁定和解锁功能加上--with-webdav-locks参数。
1)修改modules.conf,去掉注释
include "conf.d/webdav.conf"
include "conf.d/webdav.conf"
2)修改conf.d/webdav.conf,加入以下内容
- $HTTP["url"] =~ "^/dav($|/)" {
- webdav.activate = "enable" #允许webdav
- webdav.is-readonly = "enable" #只读
- webdav.sqlite-db-name = var.log_root + "/webdav.db"
- auth.backend = "plain"
- auth.backend.plain.userfile = "/etc/lighttpd/webuser"
- auth.require = ( "/dav/" =>
- (
- "method" => "basic",
- "realm" => "Access DAV",
- "require" => "valid-user"
- ),
- )
- }
注:WebDAV访问验证需要开启mod_auth,否则验证无法生效。
3)客户端测试,使用cadaver
- [root@server ~]# cadaver http://192.168.209.129/dav
- Authentication required for Access DAV on server `192.168.209.129':
- Username: test
- Password:
- dav:/dav/> ls
- Listing collection `/dav/': succeeded.
- web.tar.gz 88903 4月 12 2012
- dav:/dav/> get web.tar.gz
- Downloading `/dav/web.tar.gz' to web.tar.gz:
- Progress: [=============================>] 100.0% of 88903 bytes succeeded.
- dav:/dav/> put /root/test.tar.gz
- Uploading /root/test.tar.gz to `/dav/test.tar.gz':
- Progress: [=============================>] 100.0% of 345 bytes failed:
- 403 Forbidden
- dav:/dav/>
4)学习过程中遇到的问题:
错误1:
Sorry, no sqlite3 and libxml2 support include, compile with --with-webdav-props
解决:sqlite3和libxml2软件包,重新编译加上--with-webdav-props参数。
错误1:
Sorry, no sqlite3 and libxml2 support include, compile with --with-webdav-props
解决:sqlite3和libxml2软件包,重新编译加上--with-webdav-props参数。
错误2:
(mod_webdav.c.207) sqlite3_open failed for /etc/lighttpd/webdav.db unable to open database file
(server.c.945) Configuration of plugins failed. Going down.
解决:lighttpd服务是使用lighttpd用户启动的,在生成webdav.db时需要有保存db文件所在目录的写权限。
(mod_webdav.c.207) sqlite3_open failed for /etc/lighttpd/webdav.db unable to open database file
(server.c.945) Configuration of plugins failed. Going down.
解决:lighttpd服务是使用lighttpd用户启动的,在生成webdav.db时需要有保存db文件所在目录的写权限。
lighttpd参数:
#/usr/local/lighttpd/sbin/lighttpd –help
#/usr/local/lighttpd/sbin/lighttpd –help
-f 指定配置文件的路径
-m 指定模块的加载目录,默认是/usr/local/lighttpd/lib
-p 在屏幕上显示解析后的配置文件信息(运行信息),要指定-f参数
-t 检测配置文件的正确行,要指定-f参数
-D 设置lighttpd非后台运行,默认是后台运行
-v 显示lighttpd的版本
-V 显示lighttpd的编译时特性信息
-h 显示帮助信息,同–help
-m
-p 在屏幕上显示解析后的配置文件信息(运行信息),要指定-f参数
-t 检测配置文件的正确行,要指定-f参数
-D 设置lighttpd非后台运行,默认是后台运行
-v 显示lighttpd的版本
-V 显示lighttpd的编译时特性信息
-h 显示帮助信息,同–help
参考文章:http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ConfigurationOptions