PRE-RELEASE: lighttpd-1.5.0-r1992 12
Some time passed since the last pre-release, time for an update.
Everyone who runs 1.5.0 already has to upgrade to get fixes several vulnerabilities that got fixed in the 1.4.x branch already.
If this release passes your requirements it will be the last 1.5.0 pre-release. Afterwards we will start the the normal 1.5.x series and will add the missing features in 1.5.1 and later.
Download: http://www.lighttpd.net/download/lighttpd-1.5.0-r1992.tar.gz
md5sum: b62e2442ee0f3395844b54385b14397a
Changes
- added native support for mingw32
- added experimental option to compile without glib
- fixed mod_uploadprogress
- fixed endless loop on freebsd-sendfile (#1289)
- fixed compile in IRIX and HP/UX
- fixed hardcoded font-sizes in mod_dirlisting (#1267)
- fixed different ETag length on 32/64 platforms (#1279)
- fixed conditional dir-listing.exclude (#930)
- fixed CONTENT_LENGTH = -1 in mod_cgi (#1276)
- fixed typecast of NULL on execl() (#1235)
- fixed extra Content-Length header on 1xx, 204 and 304 (#1002)
- fixed mysql server reconnects (#518)
- fixed prctl() usage (#1310, #1333)
- fixed FastCGI header overrun in mod_proxy_backend_fastcgi (reported by mattias@secweb.se)
- fixed mem-leak in mod_auth (reported by Stefan Esser)
- fixed crash with md5-sess and cnonce not set in mod_auth (reported by Stefan Esser)
- fixed missing check for base64 encoded string in mod_auth and Basic auth (reported by Stefan Esser)
- fixed possible crash in Auth-Digest header parser on trailing WS in mod_auth (reported by Stefan Esser)
PRE-RELEASE: lighttpd-1.5.0-r1857.tar.gz 19
Baby-steps, ...
As we are running this release on lighttpd.net it is time to push it out to more testers.
Download: http://www.lighttpd.net/download/lighttpd-1.5.0-r1857.tar.gz
Changes:- mod-proxy-core
- added support to rewrite PATHINFO and SCRIPTNAME
- fixed setenv.environment support
- fixed random crashes
- fixed keep-alive announcement if keep-alive is disabled
- fixed handling of status 304 from the backends
- fixed handling of trailing CRLF after a KeepAlive POST
- fixed the output of lighttpd -p to result in a real configfile
- fixed loading of default modules if they are explicitly specified
lighttpd.net runs on 1.5.0 10
All the lighttpd.net domains (blog, trac, www, xcache, upload, ...) are now running lighttpd 1.5.0-trunk. It took some debugging to sort out problems with the way trac wants to handle PATH_INFO [1841] and how ruby handles fastcgi-keepalive requests via Unix-Sockets [1850] [1849]
In case you see that one of the sites is down, ping me (weigon) on IRC (irc.freenode.net). The server is running in valgrind and should provide enough information to fix the problem.
compression
All the content is sent as compressed content if the client supports it. As some browsers have problems with compressed javascript and CSS we only enabled it for Firefox for now.
deflate.mimetypes = ( "text/html" )
$HTTP["useragent"] =~ "Firefox" {
deflate.mimetypes += ( "text/javascript", "text/css" )
}
trac
For the trac I use:
$HTTP["host"] =~ "^trac\.lighttpd\.net" {
# alias, ...
$HTTP["url"] =~ "^/trac/" {
proxy-core.backends = ( "127.0.0.1:9090" )
proxy-core.protocol = "fastcgi"
proxy-core.rewrite-request = (
"_pathinfo" => ( "^/trac(/.*)" => "$1" ),
"_scriptname" => ( "^(/trac/)" => "$1" )
)
}
}
the rewrites tune the PATH_INFO and SCRIPT_NAME settings to the needs of trac. It should also handle the old bug around trac without a prefix.
rails + fastcgi
Thanks to the rails apps we run on blog.lighttpd.net and www.lighttpd.net I could trace down some nasty bugs. One is still open and is around the fastcgi keepalive + fcgi.rb. It isn’t tracked down yet, not enabling it seems to be safe for now.
For mephisto we are using the cleanurl.lua to get rid of the server.error-handler-404.
PRE-RELEASE: lighttpd-1.5.0-r1811.tar.gz 22
... or eating our’s own dog food.
We are now running lighttpd 1.5.0-r1811 at lighttpd.net next to the lighttpd-1.4.13 [official debian] package.
This is one way to say that this is a Release Candidate and that we want to expose it to more testers out there. Update: lighttpd.net is running on 1.5.0-trunk/
As working demo you have:
Yes, that’s mod_uploadprogress in action :)
PRE-RELEASE: lighttpd-1.5.0-r1691.tar.gz 8
A new pre-release on the road to stabilize 1.5.0.
http://www.lighttpd.net/download
Most of the work went into mod-proxy-core and new platforms:
- m-p-c can handle uploads via APJ13 which required some larger patches
- we should compile fine on solaris and IRIX again
- kqueue should work too again
- we compile natively on win32 (staticly and dynamicly)
The is the first official release that compiles natively on win32. Read the instructions on docs/build-win32.txt if you want to build yourself. It even starts :)
I have to say thanks to all the testers on the IRC channel, to jtiai for the win32 patches and jakabosky for the hard work on mod-proxy-core.
ChangeLog
- added mod_cgi again
- added cmake on win32 (static and dynamic)
- fixed http-chunk decoding
- fixed several hangs when compression is used
- fixed invalid Content-Length headers in Range-responses
- fixed handling of out-of-fds
- fixed support for Solaris and compilation on IRIX
- fixed the kqueue event-handler
- fixed mem-leak in Range requests
- fixed EFAULT in gthread-aio
PRE-RELEASE: lighttpd-1.5.0-r1605.tar.gz 15
A lot of changes made it into the svn recently. It is time again to spread the code to more testers than just the few early adaptors who are using the svn-trunk/
Please try out the new stuff around async-io and dynamic compression of content. Even directory-listings are now automaticly compressed. Just load mod_deflate and setdeflate.mimetypes = ( "text/html" )
Download:
updated lighttpd-1.5.0-r1605.tar.gz
ChangeLog (r1605):
- added check for leading slashes in mod_rewrite
- improved async-io performance for files between 4k and 16k
- fixed compression of static files in mod_deflate
- fixed configure check for the library providing aio_read()
- fixed moddirlisting, modstaticfile and the internal error-pages for mod_deflate
- fixed compilation on FreeBSD and MacOS X
- added O_NOATIME support to the network-backends linux-sendfile and writev
- added a portable, threaded network-backend based on glib’s gthread
- added threaded stat()
- added url.redirect-code to mod_redirect to set other HTTP status-codes than 302
- added filter-API and mod_chunked and mod_deflate for dynamic compression
- added a static balancer for mod-proxy-core
- added $HTTP[“request-method”] and $PHYSICAL[“path”] conditionals
- fixed X-Sendfile support in mod-proxy-core
- fixed crash if mtime is 0
- added cmake as experimental build-system
- fixed urls in AJP13-protocol of mod-proxy-core
- added support for “now” and “weeks” to mod-expire
- added mod-magnet
1.5.0 works on win32 natively - again 15
Half a year ago I was traveling a bit and tried to get lighty to compile natively on win32
Some time has passed and I concentrated on the other stuff in the 1.5.0 tree, leaving the nasty win32 code in place for someone to pick up. Ben Harper aka rogojin has picked it up and released a win32 installer for the latest pre-release
A simple tests shows that staticfiles are working nicely and that http-proxying with mod-proxy-core works too. Nice work, Ben.
PRE-RELEASE: lighttpd-1.5.0-r1477.tar.gz 10
mod-proxy-core
Robert Jakabosky fixed and improved mod-proxy-core alot since the last pre-release:
- fixed unix-socket support
- added AJP13 and SCGI support
- fixed some nasty bugs
- added documentation
- added X-LIGHTTPD-send-temp-file
POSIX Async IO
I added native support for POSIX AIO which might bring async io for more platforms. While Linux AIO is pretty stable the POSIX aio support is pretty experimental. Perhaps it compiles for you.
I tried to compile it on Linux and FreeBSD.
server.network-backend = "posix-aio"
Try it
Check if it compiles and works for you.
http://www.lighttpd.net/download/lighttpd-1.5.0-r1477.tar.gz
PRE-RELEASE: lighttpd-1.5.0-r1454.tar.gz 16
Thanks to brave testers in #lighttpd the AIO-support is stabilizing very well and the corruptions that have been reported are fixed now.
Next to bugfixes, I implemented chunk-stealing and doubled the performance of aio for small files (100k) [16MByte/s instead of 9MByte/s].
Download: http://www.lighttpd.net/download/lighttpd-1.5.0-r1454.tar.gz
PRE-RELEASE: lighttpd-1.5.0-r1435.tar.gz 5
Yeah, really.
Before you jump around and empty a barrel of beer, try to compile it first. :)
Download: http://www.lighttpd.net/download/lighttpd-1.5.0-r1435.tar.gz
Finally I got some time to finish the loose ends of 1.5.0. MySQL Network MAS is going to release (hopefully) next week, giving me time to work on lighty again.
What works and what doesn’t ?
- mod_fastcgi, mod_cgi, mod_scgi, mod_proxy are removed
- mod_proxy_core is the replace for the above plugins
- you have to spawn fastcgi processes with spawn-fcgi
- mod_cml is removed and mod_magnet isn’t included yet
Linux AIO
I blogged about Linux AIO before, now you can try it out. Install libaio and build lighttpd with—with-linux-aio.
server.network-backend = "linux-aio-sendfile"
mod-proxy-core
I checked that balancing and uploading works nicely work mod-proxy-core with fastcgi and http as protocols.
PHP
Start PHP with spawn-fcgi as documented in the manual and add
$HTTP["url"] =~ "\.php$" {
proxy-core.balancer = "round-robin"
proxy-core.protocol = "fastcgi"
proxy-core.backends = ( "127.0.0.1:1026" )
proxy-core.max-pool-size = 16
}
the to config.
BTW: we use FCGI_KEEP_CONN to keep the connection between lighttpd and the FsatCGI backend up as long as possible.
HTTP (mongrel)
We use keep-alive and HTTP/1.1 by default. Give it a try.
$SERVER["socket"] == ":1445" {
proxy-core.protocol = "http"
# proxy-core.balancer = "round-robin"
proxy-core.balancer = "sqf"
proxy-core.backends = (
"10.0.0.10:80",
"10.0.0.11:80" )
}
sqf is Shortest Queue First and is the preferred balancer if you have backends which different CPUs. See the next blog-post.