Home | 简体中文 | 繁体中文 | 杂文 | Github | 知乎专栏 | Facebook | Linkedin | Youtube | 打赏(Donations) | About
知乎专栏

第 39 章 Lighttpd

目录

39.1. 安装Lighttpd
39.1.1. quick install with aptitude
39.1.2. yum install
39.1.3. to compile and then install lighttpd
39.2. /etc/lighttpd/lighttpd.conf
39.2.1. max-worker / max-fds
39.2.2. accesslog.filename
39.2.3. ETags
39.2.4. server.tag
39.3. Module
39.3.1. simple_vhost
39.3.2. ssl
39.3.3. redirect
39.3.4. rewrite
39.3.5. alias
39.3.6. auth
39.3.7. compress
39.3.8. expire
39.3.9. status
39.3.10. setenv
39.3.11. fastcgi
39.3.12. user-agent
39.3.13. spdy
39.4. 其他模块
39.4.1. mod_secdownload 防盗链
39.5. Example
39.5.1. s-maxage

39.1. 安装Lighttpd

39.1.1. quick install with aptitude

if you OS is Ubuntu/Debian

apt-get install lighttpd
netkiller@shenzhen:~$ sudo apt-get install lighttpd
		

the config file in /etc/lighttpd

netkiller@shenzhen:~/document/Docbook/Linux$ find /etc/lighttpd/
/etc/lighttpd/
/etc/lighttpd/lighttpd.conf
/etc/lighttpd/conf-enabled
/etc/lighttpd/conf-available
/etc/lighttpd/conf-available/10-userdir.conf
/etc/lighttpd/conf-available/10-fastcgi.conf
/etc/lighttpd/conf-available/10-cgi.conf
/etc/lighttpd/conf-available/README
/etc/lighttpd/conf-available/10-ssl.conf
/etc/lighttpd/conf-available/10-proxy.conf
/etc/lighttpd/conf-available/10-auth.conf
/etc/lighttpd/conf-available/10-simple-vhost.conf
/etc/lighttpd/conf-available/10-ssi.conf
		

Enabling and disabling modules could be done by provided e.g.

/usr/sbin/lighty-enable-mod fastcgi
/usr/sbin/lighty-disable-mod fastcgi
		

when you enabled a mod please force-reload it

netkiller@shenzhen:/etc/lighttpd$ sudo lighty-enable-mod fastcgi
Available modules: auth cgi fastcgi proxy simple-vhost ssi ssl userdir
Already enabled modules: userdir
Enabling fastcgi: ok
Run /etc/init.d/lighttpd force-reload to enable changes
netkiller@shenzhen:/etc/lighttpd$ sudo /etc/init.d/lighttpd force-reload
 * Stopping web server lighttpd                                                                                                                                                                                                                                                                                       [ OK ]
 * Starting web server lighttpd
		

39.1.2. yum install

# yum install lighttpd lighttpd-fastcgi -y
# chkconfig lighttpd on
		

创建缓存目录

# mkdir -p /var/cache/lighttpd/compress
# chown lighttpd:lighttpd -R /var/cache/lighttpd
		

禁用ipv6

# vim /etc/lighttpd/lighttpd.conf

#server.use-ipv6 = "enable"
		

39.1.3. to compile and then install lighttpd

  1. 下载相关软件

    立即下载

    $ sudo apt-get install libpcre3*
    
    cd /usr/local/src/
    wget http://www.lighttpd.net/download/lighttpd-1.4.15.tar.gz
    tar zxvf lighttpd-1.4.15.tar.gz
    cd lighttpd-1.4.15
    				
  2. 编译安装

    ./configure --prefix=/usr/local/lighttpd-1.4.15 \
    --with-bzip2 \
    --with-memcache
    make
    make install
    				
  3. 创建目录与配置文件

    ln -s /usr/local/lighttpd-1.4.15/ /usr/local/lighttpd
    mkdir -p /www/pages
    mkdir /www/logs
    mkdir /usr/local/lighttpd/htdocs
    mkdir /usr/local/lighttpd/logs
    mkdir /usr/local/lighttpd/etc
    cp ./doc/lighttpd.conf /usr/local/lighttpd/etc/
    cd /usr/local/lighttpd/
    				
  4. 配置lighttpd.conf

    vi etc/lighttpd.conf

    找到 server.modules

    删除 mod_fastcgi 前的注释

    跟据你的需求修改下面定义

    server.document-root = "/usr/local/lighttpd/htdocs/"

    server.errorlog = "/usr/local/lighttpd/logs/lighttpd.error.log"

    accesslog.filename = "/usr/local/lighttpd/logs/access.log"

    注释 $HTTP["url"]

    #$HTTP["url"] =~ "\.pdf$" {
    #  server.range-requests = "disable"
    #}
    				
  5. 运行lighttpd

    /usr/local/lighttpd/sbin/lighttpd -f /usr/local/lighttpd/etc/lighttpd.conf
    				

    测试

    curl http://ip/ 因为/www/pages/下没有HTML页面所以返回:

    404 - Not Found

39.1.3.1. shell script

lighttpd script

例 39.1. /etc/init.d/lighttpd

					
#!/bin/bash
# lighttpd init file for web server
#
# chkconfig: - 100 100
# description: Security, speed, compliance, and flexibility--all of these describe LightTPD which is rapidly redefining efficiency of a webserver;
#				as it is designed and optimized for high performance environments.
# author: Neo Chen<openunix@163.com>
#
# processname: $PROG
# config:
# pidfile: /var/run/lighttpd

# source function library
. /etc/init.d/functions

PREFIX=/usr/local/lighttpd
PROG=$PREFIX/sbin/lighttpd
OPTIONS="-f /usr/local/lighttpd/etc/lighttpd.conf"
USER=daemon
RETVAL=0
prog="lighttpd"

start() {
        echo -n $"Starting $prog: "
        if [ $UID -ne 0 ]; then
                RETVAL=1
                failure
        else
                daemon --user=$USER $PROG $OPTIONS
                RETVAL=$?
                [ $RETVAL -eq 0 ] && touch /var/lock/subsys/lighttpd
        fi;
        echo
        return $RETVAL
}

stop() {
        echo -n $"Stopping $prog: "
        if [ $UID -ne 0 ]; then
                RETVAL=1
                failure
        else
                killproc $PROG
                RETVAL=$?
                [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/lighttpd
        fi;
        echo
        return $RETVAL
}

reload(){
        echo -n $"Reloading $prog: "
        killproc $PROG -HUP
        RETVAL=$?
        echo
        return $RETVAL
}

restart(){
	stop
	start
}

condrestart(){
    [ -e /var/lock/subsys/lighttpd ] && restart
    return 0
}

case "$1" in
  start)
	start
	;;
  stop)
	stop
	;;
  restart)
	restart
        ;;
  reload)
	reload
        ;;
  condrestart)
	condrestart
	;;
  status)
        status lighttpd
	RETVAL=$?
        ;;
  *)
	echo $"Usage: $0 {start|stop|status|restart|condrestart|reload}"
	RETVAL=1
esac

exit $RETVAL