Some ramblings from playing with other servers, particularly varnish and lighttpd. It would be interesting if we ditched the current configuration system and just used lua. I know this has been said before, but I've been doing a bit of playing with mod_lua and I think it it actually doable. We just need to supply a bit more glue.
Some more suggestions based on this: -dump the current idea of virtual servers. This can be done programmatically in lua: if r.hostname == "www.domain.com" then r.document_root = "/some/directory/ end We may could provide a lua library to somewhat simulate the "current" virtuals: require 'apache.httpd3.vhost' v = apache.httpd3.vhost:new() v.document_root = "/blah" v.servername = "www.domain.com" -We really only need three "handlers": request handler (everything from post_read to handler), filter(s), and log. Once again some lua library could simulate different phases, if desired. -No need for rewrite, alias, etc. Can all be done in plain lua. I think lua makes more sense that trying to do logic in mod_rewrite, anyway. -"config" file is just a lua script: require 'apache.httpd3.server' require 'apache.httpd3.gzip' require 'apache.httpd3.cache' s = apache.httpd3.server:new() s.procs = 4 s.threadpool_size = 256 s.request_timeout = 30 s.default_error_log = "/var/logs/error_log" function output_filter( r ) apache.httpd3.gzip:do_gzip( r ) apache.httpd3.cache:do_cache_stuff( r ) end function logger( r ) -- log stuff end function handler( r ) -- do handler stuff set_output_handler(r, output_filter) set_logger(r, logger) end s.default_logger = logger s:add_handler(handler) s:main() This is possible with a very minimal httpd.conf and mod_lua today. You just use the httpd.conf to "bootstrap" the lua handler and register "empty" handlers for most everything. -- Brian Akins Chief Operations Engineer Turner Digital Media Technologies