lighty's life

lighty developer blog

Pre-release of 1.3.14

The last release of lighttpd is now 3 month ago and several patches are waiting in the for their release.

Next to several bug-fixes it contains a simplified CARP (Cache Array Routing Protocol) like load balancing for mod_proxy and a new mod_scgi for WSGI + python.

The first public pre-release has been upload and is meant for a wider testing than the svn-tree.

Please don’t put that on a production system yet even it contains mostly bugfixes.

Logo-Contest Closed, Start Voting

Yeaha, what a impressive contest. So many nice ideas on how to interpret the word light. Even in the last days before the contest was closed we got some final submissions. I’m impressed and confused in the same way.

I can’t draw a decision on my own. I need your help. Think about the following questions and post yours answers in the comment.

  • Which of the logos do you like the most ?
  • Which of the logos would wear on a t-shirt and be proud of being a user of ?
  • Which represents the idea of a light webserver the best way ?

I have some personal candidates, but can’t come to a final conclusion, perhaps you can help me ?

Prepare for Show-down

Only 7 days are left for the lighttpd logo contest. In the last week 3 artists have sent in there submissions with one of them being so creative to submit 8 logos at once.

Please take a look at the new submissions and leave your comment under this article.

More Logos

The logo contest is very successfull. In the second week we got several new candidates which have their own idea of the word light. From the beginning I thought about the word light in all fashions:

  • as in lightbulb
  • as in light as a feather
  • as in diet products
  • as in lighting

The authors of the logos have added more ideas to this base and it looks truly amazing what they have created and I really love to see this. I still encourage you to add more ideas to this base, perhaps a authors graps it and draws something nice.

Lighttpd on Cygwin

I spent some hours in the airport of Hong-Kong and wanted to get the 1.3.x branch running on cygwin in combination with PHP via FastCGI. On the road I most often work under Windows on my Laptop and being able to really test it under every platform, even cygwin is a nice to have.

It was already spawned automaticly by the internal spawner after I had compiled PHP in cygwin myself with FastCGI support. The only thing missing was a working FastCGI handler. Debugging in cygwin is a lot harder than doing the same under Linux as the strace is tracing the emulated environment and not the native system calls:

$ strace —mask=syscall .libs/lighttpd.exe -D -f ./lighttpd.conf

Adding a bunch of log_error_write() statements in the mod_fastcgi.c code somewhen revealed what is really going on. I still wonder why it ever worked at all :)

changeset 343 is the final result of this debug session and will be part of 1.3.14 moving the ‘please send me FDEVENT_IN’ before we return with WAIT_FOR_EVENT. This also removes the ‘I got FDEVENT_OUT and don’t know way’ messages than sometimes appeared.

Advanced Configuration in Up Upcoming 1.4.x

i’m moo, new to lighttpd

As many of you might ask: “how do i write cond1 AND cond2”. we have the answer in 1.4

i focused on the configuration of the upcoming lighttpd1.4. i made many improvements to her.

One of the most noticeable change is nesting and chaining, as you might already known as “and” / “else”:

cond_a {
cond_b {
else cond_c {

cond_b will match only if cond_a match first, and cond_c will not match if cond_a match first. the order the condition checked/patched is same as other programming language, c, perl, php etc.

also, “user-defined” variable and “include” is impemented. if you used to copy/paste many of your config for each vhost, u can now put them into a sub config file, and even use the variable:

. in lighttpd.conf
$HTTP[“host”] == “”{“t1”
include “myvhost.conf”
$HTTP[“host”] == “”{“t2”
include “myvhost.conf”
. in myvhost.conf = + “”
server.document-root = “/mydocroot/” + + “/public_html/”

you can also use config values such as + “/…”, and even use env.* to get environment variable

i’ve also implemented(but not commited yet) “include_shell”, which parse the output of program which convert some on the fly. for example:

include “mysub.conf”

  1. compare the above line to the following
    include_shell “/usr/bin/convmimetype /etc/mime.types”
  2. same as mime.assign = array(…)

notice the above is all at config parsing time(when loading config), so no performance lost. runtime variable isn’t implemented yet. i have no idea how it should be implemented exactly, nor do i know how to avoid hurting performance.

there are more, optimization for runtime condition checking, pcre_study speed up for regex matching, new command line options(check with -h).

FIY, before i implement these things. i myself use m4, a macro language to write the config. it’s powerful but ugly and dirty, and is just a brain dead game. i can use variable/include in m4, but not output “else” “and”. but i can now do all what i needed in lighttpd alone without m4.

check news when 1.4 is out, or check svn :)

Logo Contest for Lighty

A few days ago I’ve sent out a message about the logo contest and I already received a nice set of proposals. The idea was to collect some ideas for a while and see how they develop. My current favorites are the one by Tobin Jones and Matt Wood as they cover the idea of the word light the best.