| 1 | |
|---|
| 2 | ======== |
|---|
| 3 | lighttpd |
|---|
| 4 | ======== |
|---|
| 5 | |
|---|
| 6 | ------------- |
|---|
| 7 | a light httpd |
|---|
| 8 | ------------- |
|---|
| 9 | |
|---|
| 10 | :author: Jan Kneschke |
|---|
| 11 | :Date: $Date: 2004/11/03 22:25:54 $ |
|---|
| 12 | :Revision: $Revision: 1.8 $ |
|---|
| 13 | |
|---|
| 14 | :abstract: |
|---|
| 15 | lighttpd a secure, fast, compliant and very flexible web-server |
|---|
| 16 | which has been optimized for high-performance environments. It has a very |
|---|
| 17 | low memory footprint compared to other webservers and takes care of cpu-load. |
|---|
| 18 | Its advanced feature-set (FastCGI, CGI, Auth, Output-Compression, |
|---|
| 19 | URL-Rewriting and many more) make lighttpd the perfect webserver-software |
|---|
| 20 | for every server that is suffering load problems. |
|---|
| 21 | |
|---|
| 22 | the naming |
|---|
| 23 | ---------- |
|---|
| 24 | |
|---|
| 25 | lighttpd is a __httpd__ which is |
|---|
| 26 | |
|---|
| 27 | - fast as __light__ning and |
|---|
| 28 | - __light__ when it comes to memory consumption and system requirements |
|---|
| 29 | |
|---|
| 30 | Features |
|---|
| 31 | -------- |
|---|
| 32 | |
|---|
| 33 | Network |
|---|
| 34 | ``````` |
|---|
| 35 | |
|---|
| 36 | - IPv4, IPv6 |
|---|
| 37 | |
|---|
| 38 | Protocols |
|---|
| 39 | ````````` |
|---|
| 40 | |
|---|
| 41 | - HTTP/1.0 (http://www.ietf.org/rfc/rfc1945.txt) |
|---|
| 42 | - HTTP/1.1 (http://www.ietf.org/rfc/rfc2616.txt) |
|---|
| 43 | - HTTPS (provided by openssl) |
|---|
| 44 | - CGI/1.1 (http://CGI-Spec.Golux.Com/) |
|---|
| 45 | - FastCGI (http://www.fastcgi.com/devkit/doc/fcgi-spec.html) |
|---|
| 46 | |
|---|
| 47 | Advanced Features |
|---|
| 48 | ````````````````` |
|---|
| 49 | |
|---|
| 50 | - load-balanced FastCGI |
|---|
| 51 | (one webserver distributes requests to multiple PHP-servers via FastCGI) |
|---|
| 52 | - custom error pages (for Response-Code 400-599) |
|---|
| 53 | - virtual hosts |
|---|
| 54 | - directory listings |
|---|
| 55 | - streaming CGI and FastCGI |
|---|
| 56 | - URL-Rewriting |
|---|
| 57 | - HTTP-Redirection |
|---|
| 58 | - output-compression with transparent caching |
|---|
| 59 | |
|---|
| 60 | FastCGI-Support |
|---|
| 61 | ``````````````` |
|---|
| 62 | |
|---|
| 63 | - parses the Response-header and completes the HTTP-header accordingly |
|---|
| 64 | - Keep-Alive handling based on Content-Length header |
|---|
| 65 | |
|---|
| 66 | PHP-Support |
|---|
| 67 | ``````````` |
|---|
| 68 | |
|---|
| 69 | - same speed as or faster than apache + mod_php4 |
|---|
| 70 | - handles various PHP bugs in the FastCGI SAPI |
|---|
| 71 | - includes a utility to spawn FastCGI processes (necessary for PHP 4.3.x) |
|---|
| 72 | |
|---|
| 73 | Security features |
|---|
| 74 | ````````````````` |
|---|
| 75 | |
|---|
| 76 | - chroot(), set UID, set GID |
|---|
| 77 | - protecting docroot |
|---|
| 78 | |
|---|
| 79 | HTTP/1.1 features |
|---|
| 80 | ````````````````` |
|---|
| 81 | |
|---|
| 82 | - Ranges (start-end, start-, -end, multiple ranges) |
|---|
| 83 | - HTTP/1.0 Keep-Alive + HTTP/1.1 persistent Connections |
|---|
| 84 | - methods: GET, HEAD, POST |
|---|
| 85 | - Last-Modified + If-Modified handling |
|---|
| 86 | - sends Content-Length if possible |
|---|
| 87 | - sends Transfer-Encoding: chunk, if Content-Length is not possible |
|---|
| 88 | - sends Content-Type |
|---|
| 89 | - on-the-fly output compression (deflate, gzip) |
|---|
| 90 | - authentication: basic and digest |
|---|
| 91 | (http://www.ietf.org/rfc/rfc2617.txt) |
|---|
| 92 | |
|---|
| 93 | HTTP/1.1 compliance |
|---|
| 94 | ``````````````````` |
|---|
| 95 | |
|---|
| 96 | - Sends 206 for Range Requests |
|---|
| 97 | - Sends 304 for If-Modified Requests |
|---|
| 98 | - Sends 400 for missing Host on HTTP/1.1 requests |
|---|
| 99 | - Sends 400 for broken Request-Line |
|---|
| 100 | - Sends 411 for missing Content-Length on POST requests |
|---|
| 101 | - Sends 416 for "out-of-range" on Range: Header |
|---|
| 102 | - Sends 501 for request-method != (GET|POST|HEAD) |
|---|
| 103 | - Sends 505 for protocol != HTTP/1.0 or HTTP/1.1 |
|---|
| 104 | - Sends Date: on every requests |
|---|
| 105 | |
|---|
| 106 | Intended Audience |
|---|
| 107 | ----------------- |
|---|
| 108 | |
|---|
| 109 | - Ad-Server Front-Ends ("Banner-Schleuder") |
|---|
| 110 | - delivering small files rapidly |
|---|
| 111 | - php-servers under high load |
|---|
| 112 | (load-balancing the php-request over multiple PHP-servers) |
|---|
| 113 | |
|---|
| 114 | Works with |
|---|
| 115 | ---------- |
|---|
| 116 | |
|---|
| 117 | It has been tested to work with |
|---|
| 118 | |
|---|
| 119 | - IE 6.0 |
|---|
| 120 | - Mozilla 1.x |
|---|
| 121 | - Konqueror 3.1 |
|---|
| 122 | (for Keep-Alive/Persistent Connections, Accept-Encoding for PHP + gzip) |
|---|
| 123 | - wget |
|---|
| 124 | (for Resuming) |
|---|
| 125 | - acrobat plugin |
|---|
| 126 | (for multiple ranges) |
|---|
| 127 | |
|---|
| 128 | |
|---|
| 129 | Works on |
|---|
| 130 | -------- |
|---|
| 131 | |
|---|
| 132 | lighttpd has been verified to compile and work on |
|---|
| 133 | |
|---|
| 134 | - Linux |
|---|
| 135 | - FreeBSD |
|---|
| 136 | - NetBSD |
|---|
| 137 | - Solaris 8 + 9 |
|---|
| 138 | - SGI IRIX 6.5 |
|---|
| 139 | |
|---|
| 140 | missing for HTTP/1.1 compliance |
|---|
| 141 | ------------------------------- |
|---|
| 142 | - parsing chunked POST request |
|---|
| 143 | |
|---|
| 144 | ----------------- |
|---|
| 145 | Starting lighttpd |
|---|
| 146 | ----------------- |
|---|
| 147 | |
|---|
| 148 | As daemon in the background: :: |
|---|
| 149 | |
|---|
| 150 | $ lighttpd -f <configfile> |
|---|
| 151 | |
|---|
| 152 | or without detaching from the console: :: |
|---|
| 153 | |
|---|
| 154 | $ lighttpd -D -f <configfile> |
|---|
| 155 | |
|---|