`

lighttpd基础配置-限速、与Squid配合、监控状态

阅读更多

前段时间服务器硬盘坏了,导致提供镜像下载的服务终止,年前硬件虽修好。但发现提供下载的FTP配置丢失,重新配置比较麻烦。又考虑到原提供FTP下载时,存在不少的弊端,特别是暴力破解攻击的问题很严重,导致系统日志不正常的暴涨,故决定直接提供http链接算了。我一直觉得lighttpd是相当不错的Web服务端软件,特别是对于静态文件的处理效率相当高,资源占用很少。实际使用中,需解决的几个问题是:

引用
1、限速,毕竟网速有限,可不能因为下载把所有的带宽都用完了;
2、可分析来源地址,由于网络架构前端用的是Squid 2.6做反向代理,客户访问后端的服务器时默认只记录了前端的IP,这给分析访问的客户信息带来麻烦。
3、lighttpd自带简单的状态监控工具,激活它吧。

基础配置部分就不再说明了,请搜索我之前的日志吧。以上问题解决并不复杂,提及一些重要部分即可。

一、限速
lighttpd从1.3.8开始就支持限速功能,还支持plugin等。更详细的信息,请看:Lighttpd - Docs-TrafficShaping
限速功能在Core中即有提供,不需要启动额外的模块,可用两个设定:
引用
connection.kbytes-per-second
Limit the throughput for each single connection to the given limit in kbyte/s
Default: 0 (no limit)
限制单个连接可使用的带宽,默认值是0,不限制

server.kbytes-per-second
Limit the throughput for all connections to the given limit in kbyte/s
Default: 0 (no limit)
对某个域、或链接路径限制可用的总带宽

需要注意的是:
引用
1、我没有找到对链接数的限制,这是一个比较麻烦的问题,可能需要用iptables来处理;
2、单连接的限制无法防止使用迅雷、快车等多并发工具下载的情况,所以需要同时控制对整个域或路径的最大带宽;
3、控制的单位是KBytes/sec ;
4、由于存在TCP send buffer的情况,一般实际数据会比限制的数据要高一点。

例如,lighttpd.conf中有:
引用
#单个连接不能超过30KB/s
connection.kbytes-per-second = 30

$HTTP["host"] == "download.linuxfly.org" {
  server.name = "download.linuxfly.org"
  server.document-root = "/var/www/html/iso"
  accesslog.filename = "/var/log/lighttpd/iso-access.log"
  $HTTP["url"] =~ "^/download/" {
    dir-listing.activate = "enable"
    #/download路径下可用的最大是100KB/s
    server.kbytes-per-second = 100
  }
  #除/download路径外,该域可用的最大带宽是200KB/s
  server.kbytes-per-second = 200
}

对特定客户端或plugin的使用,请参考上面官方网站WiKi上的说明。

◎ 意外
限速后,可能更多的朋友会使用多线程的下载工具来加速。此时,可能会发现系统日志报错:
引用
2009-02-04 17:39:02: (network_linux_sendfile.c.143) open failed:  Too many open files
2009-02-04 17:39:02: (connections.c.603) connection closed:

原因是,lighttpd是个单线程的服务器,所以受到Linux的单线程允许打开文件数的资源限制。
在lighttpd配置文件中,需要加入(默认1024):
引用
server.max-fds = 8192

此外,系统本身也有限制,查看Linux的最大文件描述符:
引用
# cat /etc/redflag-release
Red Flag DC Server release 5.0 (Trinity SP2)
# cat /proc/sys/fs/file-nr
580     0       131072

三个值的意思分别是:
引用
580:总共打开的文件描述符的数量(从系统开机开始算, 所有打开的文件描述符的数量)
0:总共的空闲的文件描述符的数量
131072:最大能打开的文件描述符的数量

修改:

# echo “132096″ > /proc/sys/fs/file-max

或加入/etc/sysctl.conf文件中。

二、与Squid的配合
我的网络架构是:
引用
Squid ———— vz:lighttpd:80

默认在lighttpd的accesslog里面,是无法记录透过Squid(或Apache的mod_proxy)过来的用户ip地址的,而全记录的是Squid(或Apache机器)的代理网关ip地址。在我们需要分析客户端来源信息时,就需要做些设定了。

1、Squid配置
修改/etc/squid/squid.conf配置文件,确认下面的设置:
引用
#要禁用重写url头,否则后台的http服务器日志看不到客户端的来源信息了
url_rewrite_host_header off

更详细,请看这里:[原]配置Squid 2.6实现反向代理

2、lighttpd设置
把mod_accesslog模块打开,然后修改accesslog格式,即有:
引用
server.modules              = (..., "mod_accesslog", ... )
#### accesslog module
accesslog.filename          = "/var/log/lighttpd/access.log"
accesslog.format = "%{X-Forwarded-For}i %v %u %t \"%r\" %s %b \"%{User-Agent}i\" \"%{Referer}i\""

其中”%{X-Forwarded-For}i 就是记录了用户来源的ip地址,这里日志与Apache combined相同。

三、监控状态
lighttpd的mod_status是可以提供server-status监控页面的,需要在配置文件中加入:
引用
server.modules = ( ..., "mod_status", ... )
status.status-url = "/server-status"
status.config-url = "/server-config"
status.statistics-url = "/server-statistics"

重启lighttpd服务后,访问
引用
http://ip/server-status
http://ip/server-config
http://ip/server-statistics

页面即可:


 
其他可选参数,请见:Lighttpd - Docs-ModStatus

※ lighttpd更多可用的模块说明,请见这里:Wiki Modules Documentation

  • 大小: 100.9 KB
分享到:
评论

相关推荐

    lighttpd-1.4.20-cmake

    lighttpd-1.4.20-cmake

    最新lighttpd源码 lighttpd-1.4.22

    Lighttpd是一个德国人领导的开源软件,其根本的目的是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的web server环境。具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点。lighttpd是...

    安卓系统lighttpd-php-mysql本地环境 v8.0.zip

    这是一个可在安卓手机上布置的服务器环境,功能组件包括:lighttpd、php和mysql,能成功运行DZ等php程序,安装和配置过程十分简单,也许现在该是讨论用什么手机做服务器更合适的时候了。  演示图片为一成功运行的...

    lighttpd-1.4.55移植配置与测试.rar

    交叉编译最新版的lighttpd-1.4.55,配置与测试CGI与HTML.内含 lighttpd-1.4.55源码,移植教程,cgi测试代码,html测试代码.测试cgi时,浏览器中应该输入192.168.100.30/cgi-bin/xx.cgi .其中 192.168.100.30为开发板的ip

    lighttpd-1.4.45_lighttpd服务器_

    lighttpd轻量级web嵌入式服务器,方便嵌入式平台移植,小巧安全

    LightTPD for windows 1.4.45-x86

    自己在cygwin下编译的源码,并指定的默认配置文件路径和lib路径, 编译环境windows xp 32位 gcc version 4.9.2 (GCC) 编译参数: ./configure --prefix=XXXX --without-bzip2 配置文件为从源码dco/config目录获取后...

    LightTPD for windows 1.4.45-x64

    自己在cygwin下编译的源码,并指定的默认配置文件路径和lib路径, 编译环境windows7 64位 gcc version 5.4.0 (GCC) 编译参数: ./configure --prefix=XXXX --without-bzip2 配置文件为从源码dco/config目录获取后进行...

    安卓系统lighttpd-php-mysql本地环境 v8.0

    这是一个可在安卓手机上布置的服务器环境,功能组件包括:lighttpd、php和mysql,能成功运行DZ等php程序,安装和配置过程十分简单,也许现在该是讨论用什么手机做服务器更合适的时候了。演示图片为一成功运行的...

    LightTPD-1.4.16-Win32安装版

    高性能轻量级web服务器,具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点。

    最新lighttpd-1.4.28源码下载

    最新lighttpd-1.4.28源码下载最新lighttpd-1.4.28源码下载最新lighttpd-1.4.28源码下载最新lighttpd-1.4.28源码下载最新lighttpd-1.4.28源码下载最新lighttpd-1.4.28源码下载

    lighttpd-1.4.20.tar

    lighttpd-1.4.20.tar lighttpd-1.4.20.tar

    lighttpd配置和启动脚本

    包括lighttpd.conf配置文件以及用于控制web server启动和停止的脚本。

    lighttpd-1.4.20源码分析

    lighttpd-1.4.20源码看了很久了,学习总结本来早就该写了的,只是人懒得很,拖拖拉拉到现在,如果各位看了觉得多少还有那么一点点帮助,我就继续来(当然,总结的东东还是会发在这个帖子内)。 预计总共将有15个...

    lighttpd-1.4.30.tar.gz

    lighttpd-1.4.30.tar.gz压缩包,解压后查阅网上配置过程,配置后即可使用

    lighttpd-1.4.20源代码

    lighttpd-1.4.20源代码

    docker镜像构建,中间件mysql、lighttpd、Nginx、squid配置和启动、dubbo服务部署

    学习心得,分享出来供大家学习。docker镜像构建,中间件mysql、lighttpd、Nginx、squid配置和启动、dubbo服务部署

    lighttpd-1.4.39.tar.gz

    lighttpd-1.4.39 一款好用的web服务器

    lighttpd-1.4.26 源码

    lighttpd-1.4.26 源码,官方直接下载,学习的好资源。

    lighttpd基础入门——状态机与插件

    本人也是初学者,在此总结了lighttpd的状态机与插件的相关知识。希望同路中人可以一起交流,相互学习

    varnish+lighttpd配置

    varnish+lighttpd配置

Global site tag (gtag.js) - Google Analytics