advanced configuration in up upcoming 1.4.x 2

Posted by moo Sat, 07 May 2005 13:07:00 GMT

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.lighttpd.net"{
  var.name="t1" 
  include "myvhost.conf" 
}
$HTTP["host"] == "t2.lighttpd.net"{
  var.name="t2" 
  include "myvhost.conf" 
}
. in myvhost.conf
server.name = var.name + ".lighttpd.net" 
server.document-root = "/mydocroot/" + var.name + "/public_html/" 

you can also use config values such as server.name + ”/...”, 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" 
# compare the above line to the following
include_shell "/usr/bin/convmimetype /etc/mime.types" 
# 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 :)

Trackbacks

Use the following link to trackback from your own site:
http://blog.lighttpd.net/articles/trackback/4

Comments

Leave a response

  1. Michele Fri, 16 Jun 2006 12:01:50 GMT
    Very useful! good job guy.
  2. free cingular cell phone ringtone Sun, 18 Jun 2006 15:51:52 GMT
    Beauty ringtones for you!
Comments