Lighttpd

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]:

  1. ## 网站根目录 映射在机器上的物理路径
  2. server.document-root = "/home/lighttpd/html/"
  3. ## 如果网站目录中出现以下文件名,不用指定文件名便可直接访问
  4. index-file.names = ( "index.php", "index.html",
  5. "index.htm", "default.htm" )
  6. ## Lighttpd 进程的归属用户
  7. server.username = "nobody"
  8. ## Lighttpd 进程的归属群组
  9. server.groupname = "nobody"
  10. ## 绑定到端口 默认为 80
  11. #server.port = 81
  12. ## 绑定到地址 默认为 所有
  13. #server.bind = "127.0.0.1"
  14. ## 访问日志 路径
  15. accesslog.filename = "/var/log/lighttpd/access.log"
  16. ## 错误日志 路径
  17. server.errorlog = "/var/log/lighttpd/error.log"
  18. ## 禁止访问以下文件
  19. url.access-deny = ( "~", ".inc" )
  20. ## 与目录列表相关的设置
  21. #dir-listing.activate = "enable"
  22. #dir-listing.encoding = "utf8"
  23. #dir-listing.show-readme = "enable"

配置文件中的server.modules字段决定Lighttpd使用哪些扩展模块:

  1. server.modules = ("mod_access","mod_fastcgi","mod_accesslog" )
  • Lighttpd 通过 mod_fastcgi 模块支持 PHP
  • mod_accesslog 模块为访问纪录

其实在 /etc/lighttpd/lighttpd.conf 文件中,这部分内容写在多行,方便用 # 作注释,禁用不需要的模块

  1. server.modules = (
  2. ## 基础模块
  3. "mod_access",
  4. ## 访问纪录
  5. "mod_accesslog" )
  6. ## fastcgi 支持
  7. "mod_fastcgi",
  8. ## cgi 支持
  9. # "mod_cgi",
  10. ## 路径绑定
  11. # "mod_alias",
  12. ## 代理 (转发页面)
  13. # "mod_proxy",
  14. ## 虚拟主机
  15. # "mod_evhost",
  16. ## 输出压缩
  17. # "mod_compress",
  18. ## 网址重写
  19. # "mod_rewrite",
  20. ## 用户认证
  21. # "mod_auth",
  22. # "mod_redirect",
  23. # "mod_cml",
  24. # "mod_trigger_b4_dl",
  25. # "mod_status",
  26. # "mod_setenv",
  27. # "mod_simple_vhost",
  28. # "mod_userdir",
  29. # "mod_ssi",
  30. # "mod_usertrack",
  31. # "mod_expire",
  32. # "mod_secdownload",
  33. # "mod_rrdtool",

fastcgi 配置

在配置文件的server.modules字段中启用mod_fastcgi模块,然后检查以下内容:

  1. ### fastcgi 脚本扩展名
  2. static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )
  3. ### fastcgi 服务器设置
  4. fastcgi.server = ( ".php" =>
  5. ( "localhost" =>
  6. (
  7. # TCP/IP 接口 (“套接字”)
  8. "socket" => "/tmp/php-fastcgi.socket",
  9. # PHP cgi 模式的可执行文件(PHP 有 cli 和 cgi 两种模式)
  10. "bin-path" => "/usr/bin/php-cgi"
  11. )
  12. )
  13. )

上面例子的第二部分,使用 Lighttpd 转发规则。大意为: .php文件按以下方式处理 => 从localhost(本地),发送到/tmp/php-fastcgi.socket接口,使用/usr/bin/php-cgi处理。写成一行比较直观:

  1. fastcgi.server = ( ".php" => ( "localhost" => ( "socket" => "/tmp/php-fastcgi.socket", "bin-path" => "/usr/bin/php-cgi" )))

如果想要 fastcgi 和 PHP 协同工作,还需要对 PHP 作一些设置,见“PHP&MySQL”一节

proxy

该模块可以将文件转发到其它服务器进行处理,例如将.jsp文件转发到Tomcat服务器

  1. ### 首先启用 mod_proxy 模块
  2. # += 表示在原来设置上增加
  3. servers.modules +=( "mod_proxy")
  4. ### 设置 proxy 服务器转发规则
  5. proxy.server = ( ".jsp" =>
  6. ( "localhost" =>
  7. (
  8. # 将 .jsp 文件发送到 地址“127.0.0.1”的“8080”端口(也就是本机的 Tomcat 服务器)
  9. "host" => "127.0.0.1",
  10. "port" => 8080
  11. )
  12. )
  13. )

CGI

Lighttpd 可以支持 cgi

  1. ### 启用 mod_cgi 模块
  2. server.modules += ("mod_cgi")
  3. ### 设置 cgi 解释器
  4. cgi.assign = ( ".pl" => "/usr/bin/perl",
  5. ".cgi" => "/usr/bin/perl",
  6. ".py" => "/usr/bin/python" )

路径绑定

将一个路径,映射到网站目录中

  1. ## 启用 mod_alias 模块
  2. servers.modules +=( "mod_alias")
  3. ## 将 /home/lighttpd/html/man 映射到 http://host/docs
  4. alias.url += ( "/docs" => "/home/lighttpd/html/man" )

虚拟主机

Lighttpd 可以建立多个虚拟主机,绑定在不同的网络接口

  1. ### 启用 mod_evhost 模块
  2. servers.modules +=( "mod_evhost")
  3. ### 虚拟主机绑定的网络接口
  4. $HTTP["host"] == "192.168.1.2"
  5. {
  6. ### 虚拟主机可以使用独立的选项
  7. dir-listing.activate = "enable"
  8. dir-listing.encoding = "utf8"
  9. dir-listing.show-readme = "enable"
  10. ### 虚拟主机根目录
  11. server.document-root = "/home/user/html"
  12. ### 虚拟主机路径绑定
  13. alias.url = ( "/download/" => "/home/user/downloads/" )
  14. alias.url += ( "/pictures/" => "/home/user/pictures/" )
  15. }

[43] 查看/etc/init.d/lighttpd文件,可以看到类似字句:
/usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd.conf

- f 选项指定配置文件