lighttpd 1.4.x https://www.lighttpd.net/
Go to file
Glenn Strauss bbbbfb3de0 untangle overly complex control flow logic
for dynamic handlers mod_cgi, mod_fastcgi, mod_scgi, mod_proxy
(mod_cgi control flow logic simplification began in a prior commit)

- connection state machine calls the subrequest handler
- subrequest handler sets up the connection to the backend
  and registers fdevent handler to handle backend events
- fdevent handler handles backend events and then schedules
  a call to connection state machine
- when retrying an alternate backend, backend state is reset
  and then response state is reset so that the connection state
  machine will call back into the subrequest handler to retry

Dynamic handlers no longer directly modify connection state
(calls to connection_set_state() from dynamic handlers were removed)

Dynamic handlers no longer reset con->physical.path, and they
preserve con->mode when retrying alternate backends.  This is done
to skip repeated processing in response.c:http_response_prepare()

While this patch increases consistency in control flow handling,
there is more work to be done that can further improve upon this.

x-ref:
  "handle-req time too long"
  https://redmine.lighttpd.net/issues/1149
2016-04-18 06:19:03 -04:00
cmake [cmake] cleanup cache variables if features get deactivated 2015-08-22 16:01:05 +00:00
doc [config] server.listen-backlog option (fixes #1825, #2116) 2016-04-18 04:29:28 -04:00
src untangle overly complex control flow logic 2016-04-18 06:19:03 -04:00
tests [core] never evaluate else branches until the previous branches are aready (fixes #2598) 2016-02-21 17:56:24 +00:00
.gitignore [scons] various improvements 2015-08-29 09:28:04 +00:00
AUTHORS Add some more people to AUTHORS list 2010-08-05 19:22:29 +00:00
CMakeLists.txt - next is 1.4.40 2016-01-03 14:48:04 +00:00
COPYING - white space cleanup part 2 this time 1.4 ;) 2006-10-04 13:26:23 +00:00
INSTALL - white space cleanup part 2 this time 1.4 ;) 2006-10-04 13:26:23 +00:00
Makefile.am small README for FreeBSD build setup 2015-08-23 07:41:11 +00:00
NEWS [core] retry tempdirs on partial write, ENOSPC (fixes #2588) 2016-04-18 04:30:55 -04:00
README [doc] Move docs to outdated/ subdir and refer to wiki instead (fixes #2248) 2011-06-13 12:55:54 +00:00
README.FreeBSD use libmemcached instead of deprecated libmemcache 2016-01-03 14:48:11 +00:00
SConstruct use libmemcached instead of deprecated libmemcache 2016-01-03 14:48:11 +00:00
autogen.sh [autobuild] create m4/ before calling autoreconf 2013-11-10 13:59:43 +00:00
config.py-sample new build_static/build_fullstatic/build_dynamic option 2006-01-07 10:10:17 +00:00
configure.ac [autobuild] use AC_CANONICAL_HOST instead of AC_CANONICAL_TARGET (fixes #1866) 2016-03-19 14:46:21 +00:00
distribute.sh.in - white space cleanup part 2 this time 1.4 ;) 2006-10-04 13:26:23 +00:00
packdist.sh fix packdist.sh output links 2015-09-15 11:52:38 +00:00

README

========
lighttpd
========

-------------
a light httpd
-------------

:author: Jan Kneschke
:Date: $Date: 2004/11/03 22:25:54 $
:Revision: $Revision: 1.8 $

:abstract:
  lighttpd a secure, fast, compliant and very flexible web-server
  which has been optimized for high-performance environments. It has a very
  low memory footprint compared to other webservers and takes care of cpu-load.
  Its advanced feature-set (FastCGI, CGI, Auth, Output-Compression,
  URL-Rewriting and many more) make lighttpd the perfect webserver-software
  for every server that is suffering load problems.

:documentation:
  http://wiki.lighttpd.net/

the naming
----------

lighttpd is a __httpd__ which is

- fast as __light__ning and
- __light__ when it comes to memory consumption and system requirements

Features
--------

Network
```````

- IPv4, IPv6

Protocols
`````````

- HTTP/1.0 (http://www.ietf.org/rfc/rfc1945.txt)
- HTTP/1.1 (http://www.ietf.org/rfc/rfc2616.txt)
- HTTPS (provided by openssl)
- CGI/1.1 (http://CGI-Spec.Golux.Com/)
- FastCGI (http://www.fastcgi.com/devkit/doc/fcgi-spec.html)

Advanced Features
`````````````````

- load-balanced FastCGI
  (one webserver distributes requests to multiple PHP-servers via FastCGI)
- custom error pages (for Response-Code 400-599)
- virtual hosts
- directory listings
- streaming CGI and FastCGI
- URL-Rewriting
- HTTP-Redirection
- output-compression with transparent caching

FastCGI-Support
```````````````

- parses the Response-header and completes the HTTP-header accordingly
- Keep-Alive handling based on Content-Length header

PHP-Support
```````````

- same speed as or faster than apache + mod_php4
- handles various PHP bugs in the FastCGI SAPI
- includes a utility to spawn FastCGI processes (necessary for PHP 4.3.x)

Security features
`````````````````

- chroot(), set UID, set GID
- protecting docroot

HTTP/1.1 features
`````````````````

- Ranges (start-end, start-, -end, multiple ranges)
- HTTP/1.0 Keep-Alive + HTTP/1.1 persistent Connections
- methods: GET, HEAD, POST
- Last-Modified + If-Modified handling
- sends Content-Length if possible
- sends Transfer-Encoding: chunk, if Content-Length is not possible
- sends Content-Type
- on-the-fly output compression (deflate, gzip)
- authentication: basic and digest
  (http://www.ietf.org/rfc/rfc2617.txt)

HTTP/1.1 compliance
```````````````````

- Sends 206 for Range Requests
- Sends 304 for If-Modified Requests
- Sends 400 for missing Host on HTTP/1.1 requests
- Sends 400 for broken Request-Line
- Sends 411 for missing Content-Length on POST requests
- Sends 416 for "out-of-range" on Range: Header
- Sends 501 for request-method != (GET|POST|HEAD)
- Sends 505 for protocol != HTTP/1.0 or HTTP/1.1
- Sends Date: on every requests

Intended Audience
-----------------

- Ad-Server Front-Ends ("Banner-Schleuder")
  - delivering small files rapidly
- php-servers under high load
  (load-balancing the php-request over multiple PHP-servers)

Works with
----------

It has been tested to work with

- IE 6.0
- Mozilla 1.x
- Konqueror 3.1
  (for Keep-Alive/Persistent Connections, Accept-Encoding for PHP + gzip)
- wget
  (for Resuming)
- acrobat plugin
  (for multiple ranges)


Works on
--------

lighttpd has been verified to compile and work on

- Linux
- FreeBSD
- NetBSD
- Solaris 8 + 9
- SGI IRIX 6.5

missing for HTTP/1.1 compliance
-------------------------------
- parsing chunked POST request

-----------------
Starting lighttpd
-----------------

As daemon in the background: ::

  $ lighttpd -f <configfile>

or without detaching from the console: ::

  $ lighttpd -D -f <configfile>