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

Reply via email to