lighttpd
| lighttpd | |
|---|---|
| File:Lighttpd logo.svg | |
| Original author | Jan Kneschke |
| Initial release | March 2003 |
| Preview release | 1.4.82 (September 12, 2025) [±] |
| Repository |
|
| Written in | C |
| Engine | |
| Available in | English |
| Type | Web server |
| License | BSD-3-Clause |
lighttpd (prescribed pronunciation: "lighty")[1] is an open-source web server optimized for speed-critical environments. It was originally written by Jan Kneschke as a proof-of-concept of the c10k problem – how to handle 10,000 connections in parallel on one server,[2] but has gained worldwide popularity.[3] Its name is a portmanteau of "light" and "httpd".
Premise
[edit | edit source]The low memory footprint (compared to other web servers),[4] small CPU load and speed optimizations[5] make lighttpd suitable for servers that are suffering load problems, or for serving static media separately from dynamic content. lighttpd is free and open-source software and is distributed under the BSD license. It runs natively on Unix-like operating systems, with experimental support for Microsoft Windows.[6]
Application support
[edit | edit source]lighttpd supports the FastCGI, SCGI and CGI interfaces to external programs, allowing web applications written in any programming language to be used with the server. As a particularly popular language, PHP performance has received special attention. Lighttpd's FastCGI can be configured to support PHP with opcode caches (like APC) properly and efficiently. Additionally, it has received attention from its popularity within the Python, Perl, Ruby and Lua communities. Lighttpd also supports WebDNA, the resilient in-memory database system designed to build database-driven websites. It is a popular web server for the Catalyst and Ruby on Rails web frameworks. Lighttpd does not support ISAPI.
Features
[edit | edit source]- Load balancing, CGI, FastCGI, SCGI, HTTP proxy, Servlet AJP, WebSocket tunnel support
chrootsupport- Web server event mechanism performance –
select(),poll(), andepoll()[7] - Support for more efficient event notification schemes like
kqueueandepoll - Conditional URL rewriting (mod_rewrite)
- TLS/SSL with SNI support, via OpenSSL, GnuTLS, Mbed TLS, NSS, WolfSSL.[8]
- Authentication against an LDAP or DBI server
- RRDtool statistics
- Rule-based downloading with possibility of a script handling only authentication
- Server Side Includes support (but not server-side CGI from SSI)[9]
- Flexible virtual hosting
- Modules support
- Lua programming language scripts via mod_magnet[10]
- WebDAV support
- HTTP compression using mod_deflate (zlib, brotli, zstd)
- Light-weight (less than 1 MB)[11]
- Single-process design with only several threads. No processes or threads started per connection.
- HTTP/2 support since lighttpd 1.4.56
- HTTP/2 WebSocket support since lighttpd 1.4.65
- TLS Encrypted Client Hello (ECH) support since lighttpd 1.4.77[12]
Limitations
[edit | edit source]- Versions below 1.4.40 do not officially support sending large files from CGI, FastCGI, or proxies[13] unless X-Sendfile is used. This limitation has been removed in lighttpd 1.4.40.[14]
- No HTTP/3 support
Usage
[edit | edit source]Lighttpd was used in the past by several high-traffic websites, including Bloglines, xkcd, Meebo, and YouTube.[15][better source needed] The Wikimedia Foundation also once ran Lighttpd servers.[16] Due to relatively small size it's often used in embedded devices like GL.iNet and Turris Omnia.
It's also used by git as a HTTP server daemon.
See also
[edit | edit source]Lua error in mw.title.lua at line 392: bad argument #2 to 'title.new' (unrecognized namespace name 'Portal').
- Comparison of web server software
- Internet Cache Protocol
- Proxy server which discusses client-side proxies
- Reverse proxy which discusses origin-side proxies
- Traffic Server
- Web accelerator which discusses host-based HTTP acceleration
References
[edit | edit source]- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value)..
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value)..
- ^ Gabriel Kerneis and Juliusz Chroboczek. Are events fast?. PPS technical report, University of Paris 7. 2009.
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lighttpd - Bug #1101: SSI include virtual does not run cgi – lighty labs
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
Further reading
[edit | edit source]- Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
External links
[edit | edit source]- Lua error in Module:Official_website at line 94: attempt to index field 'wikibase' (a nil value).