Lighttpd
是一个新兴的、轻量级的 web 服务器,它开始越来越多的应用在一些重要场合,如:YouTobe、Sourceforge、豆瓣……
Lighttpd 以安全、快速和内存消耗低著称,还专门为大型分布式连接环境做了优化,支持 FastCGI, CGI, Auth, 输出压缩(output compress), URL重写, Alias 等重要功能。
Lighttpd 已经进入大多数发行版的软件仓库,安装方式见表 16.1 “包管理系统”
安装完成后,用启动脚本启动:/etc/init.d/lighttpd
start
,见“手动控制服务”一节
/etc/lighttpd/lighttpd.conf
为 Lighttpd 服务器的配置文件[43]:
## 网站根目录 映射在机器上的物理路径 server.document-root = "/home/lighttpd/html/" ## 如果网站目录中出现以下文件名,不用指定文件名便可直接访问 index-file.names = ( "index.php", "index.html", "index.htm", "default.htm" ) ## Lighttpd 进程的归属用户 server.username = "nobody" ## Lighttpd 进程的归属群组 server.groupname = "nobody" ## 绑定到端口 默认为 80 #server.port = 81 ## 绑定到地址 默认为 所有 #server.bind = "127.0.0.1" ## 访问日志 路径 accesslog.filename = "/var/log/lighttpd/access.log" ## 错误日志 路径 server.errorlog = "/var/log/lighttpd/error.log" ## 禁止访问以下文件 url.access-deny = ( "~", ".inc" ) ## 与目录列表相关的设置 #dir-listing.activate = "enable" #dir-listing.encoding = "utf8" #dir-listing.show-readme = "enable"
配置文件中的server.modules
字段决定Lighttpd使用哪些扩展模块:
server.modules = ("mod_access","mod_fastcgi","mod_accesslog" )
mod_fastcgi
模块支持 PHP
mod_accesslog
模块为访问纪录
其实在 /etc/lighttpd/lighttpd.conf
文件中,这部分内容写在多行,方便用 #
作注释,禁用不需要的模块
server.modules = ( ## 基础模块 "mod_access", ## 访问纪录 "mod_accesslog" ) ## fastcgi 支持 "mod_fastcgi", ## cgi 支持 # "mod_cgi", ## 路径绑定 # "mod_alias", ## 代理 (转发页面) # "mod_proxy", ## 虚拟主机 # "mod_evhost", ## 输出压缩 # "mod_compress", ## 网址重写 # "mod_rewrite", ## 用户认证 # "mod_auth", # "mod_redirect", # "mod_cml", # "mod_trigger_b4_dl", # "mod_status", # "mod_setenv", # "mod_simple_vhost", # "mod_userdir", # "mod_ssi", # "mod_usertrack", # "mod_expire", # "mod_secdownload", # "mod_rrdtool",
在配置文件的server.modules
字段中启用mod_fastcgi
模块,然后检查以下内容:
### fastcgi 脚本扩展名 static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" ) ### fastcgi 服务器设置 fastcgi.server = ( ".php" => ( "localhost" => ( # TCP/IP 接口 (“套接字”) "socket" => "/tmp/php-fastcgi.socket", # PHP cgi 模式的可执行文件(PHP 有 cli 和 cgi 两种模式) "bin-path" => "/usr/bin/php-cgi" ) ) )
上面例子的第二部分,使用 Lighttpd 转发规则。大意为:
.php
文件按以下方式处理 => 从localhost
(本地),发送到/tmp/php-fastcgi.socket
接口,使用/usr/bin/php-cgi
处理。写成一行比较直观:
fastcgi.server = ( ".php" => ( "localhost" => ( "socket" => "/tmp/php-fastcgi.socket", "bin-path" => "/usr/bin/php-cgi" )))
如果想要 fastcgi 和 PHP 协同工作,还需要对 PHP 作一些设置,见“PHP&MySQL”一节
该模块可以将文件转发到其它服务器进行处理,例如将.jsp
文件转发到Tomcat服务器
### 首先启用 mod_proxy 模块 # += 表示在原来设置上增加 servers.modules +=( "mod_proxy") ### 设置 proxy 服务器转发规则 proxy.server = ( ".jsp" => ( "localhost" => ( # 将 .jsp 文件发送到 地址“127.0.0.1”的“8080”端口(也就是本机的 Tomcat 服务器) "host" => "127.0.0.1", "port" => 8080 ) ) )
Lighttpd 可以支持 cgi
### 启用 mod_cgi 模块 server.modules += ("mod_cgi") ### 设置 cgi 解释器 cgi.assign = ( ".pl" => "/usr/bin/perl", ".cgi" => "/usr/bin/perl", ".py" => "/usr/bin/python" )
将一个路径,映射到网站目录中
## 启用 mod_alias 模块 servers.modules +=( "mod_alias") ## 将 /home/lighttpd/html/man 映射到 http://host/docs alias.url += ( "/docs" => "/home/lighttpd/html/man" )
Lighttpd 可以建立多个虚拟主机,绑定在不同的网络接口
### 启用 mod_evhost 模块 servers.modules +=( "mod_evhost") ### 虚拟主机绑定的网络接口 $HTTP["host"] == "192.168.1.2" { ### 虚拟主机可以使用独立的选项 dir-listing.activate = "enable" dir-listing.encoding = "utf8" dir-listing.show-readme = "enable" ### 虚拟主机根目录 server.document-root = "/home/user/html" ### 虚拟主机路径绑定 alias.url = ( "/download/" => "/home/user/downloads/" ) alias.url += ( "/pictures/" => "/home/user/pictures/" ) }
[43] 查看/etc/init.d/lighttpd
文件,可以看到类似字句:/usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd.conf
- f 选项指定配置文件