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