前段时间服务器硬盘坏了,导致提供镜像下载的服务终止,年前硬件虽修好。但发现提供下载的FTP配置丢失,重新配置比较麻烦。又考虑到原提供FTP下载时,存在不少的弊端,特别是暴力破解攻击的问题很严重,导致系统日志不正常的暴涨,故决定直接提供http链接算了。我一直觉得lighttpd是相当不错的Web服务端软件,特别是对于静态文件的处理效率相当高,资源占用很少。实际使用中,需解决的几个问题是:
2、可分析来源地址,由于网络架构前端用的是Squid 2.6做反向代理,客户访问后端的服务器时默认只记录了前端的IP,这给分析访问的客户信息带来麻烦。
3、lighttpd自带简单的状态监控工具,激活它吧。
基础配置部分就不再说明了,请搜索我之前的日志吧。以上问题解决并不复杂,提及一些重要部分即可。
一、限速
lighttpd从1.3.8开始就支持限速功能,还支持plugin等。更详细的信息,请看:Lighttpd – Docs-TrafficShaping
限速功能在Core中即有提供,不需要启动额外的模块,可用两个设定:
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)
对某个域、或链接路径限制可用的总带宽
需要注意的是:
2、单连接的限制无法防止使用迅雷、快车等多并发工具下载的情况,所以需要同时控制对整个域或路径的最大带宽;
3、控制的单位是KBytes/sec ;
4、由于存在TCP send buffer的情况,一般实际数据会比限制的数据要高一点。
例如,lighttpd.conf中有:
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: (connections.c.603) connection closed:
原因是,lighttpd是个单线程的服务器,所以受到Linux的单线程允许打开文件数的资源限制。
在lighttpd配置文件中,需要加入(默认1024):
此外,系统本身也有限制,查看Linux的最大文件描述符:
Red Flag DC Server release 5.0 (Trinity SP2)
# cat /proc/sys/fs/file-nr
580 0 131072
三个值的意思分别是:
0:总共的空闲的文件描述符的数量
131072:最大能打开的文件描述符的数量
修改:
或加入/etc/sysctl.conf文件中。
二、与Squid的配合
我的网络架构是:
默认在lighttpd的accesslog里面,是无法记录透过Squid(或Apache的mod_proxy)过来的用户ip地址的,而全记录的是Squid(或Apache机器)的代理网关ip地址。在我们需要分析客户端来源信息时,就需要做些设定了。
1、Squid配置
修改/etc/squid/squid.conf配置文件,确认下面的设置:
url_rewrite_host_header off
更详细,请看这里:配置Squid 2.6实现反向代理
2、lighttpd设置
把mod_accesslog模块打开,然后修改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监控页面的,需要在配置文件中加入:
status.status-url = "/server-status"
status.config-url = "/server-config"
status.statistics-url = "/server-statistics"
重启lighttpd服务后,访问
http://ip/server-config
http://ip/server-statistics
页面即可:
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/111108.html