| See sample_httpd.conf for examples | |
| The basic module loading directive is | |
| LoadModule lua_module modules/mod_lua.so | |
| The handler name is "lua-script" so you can use the normal | |
| AddHandler directive, such as "AddHandler lua-script .lua" to | |
| set anything ending in .lua to use mod_lua to evaluate | |
| mod_lua exports several additional directives: | |
| LuaRoot /path/to/a/directory | |
| Specify the base path which will be used to evaluate all | |
| relative paths within mod_lua. If not specified they | |
| will be resolved relative to the current working directory, | |
| which may not always work well for a server. | |
| LuaScope once|request|conn|server [max|min max] | |
| Specify the lifecycle scope of the Lua interpreter which will | |
| be used by handlers in this "Directory." The default is "once" | |
| once: use the interpreter once and throw it away. | |
| request: use the interpreter to handle anything based on | |
| the same file within this request, which is also | |
| request scoped. | |
| conn: Same as request but attached to the connection_rec | |
| server: This one is different than others because the | |
| server scope is quite long lived, and multiple threads | |
| will have the same server_rec. To accommodate this | |
| server scoped interpreter are stored in an apr | |
| resource list. The min and max arguments are intended | |
| to specify the pool size, but are unused at this time. | |
| LuaMapHandler uri-pattern /path/to/lua/script.lua [function-name] | |
| This directive matches a uri pattern to invoke a specific | |
| handler function in a specific file. It uses PCRE regular | |
| expressions to match the uri, and supports interpolating | |
| match groups into both the file path and the function name | |
| be careful writing your regular expressions to avoid security | |
| issues. | |
| Examples: | |
| LuaMapHandler /(\w+)/(/w+) /scripts/$1.lua handle_$2 | |
| This would match uri's such as /photos/show?id=9 | |
| to the file /scripts/photos.lua and invoke the | |
| handler function handle_show on the lua vm after | |
| loading that file. | |
| LuaMapHandler /bingo /scripts/wombat.lua | |
| This would invoke the "handle" function, which | |
| is the default if no specific function name is | |
| provided. | |
| LuaPackagePath /path/to/include/?.lua | |
| Add a path to lua's module search path. Follows the same | |
| conventions as lua. This just munges the package.path in the | |
| lua vms. | |
| Examples: | |
| LuaPackagePath /scripts/lib/?.lua | |
| LuaPackagePath /scripts/lib/?/init.lua | |
| LuaPackageCPath /path/to/include/?.soa | |
| Add a path to lua's shared library search path. Follows the same | |
| conventions as lua. This just munges the package.cpath in the | |
| lua vms. | |
| Examples: | |
| LuaPackagePath /scripts/lib/?.so | |
| LuaCodeCache stat|forever|never | |
| Specify the behavior of the in-memory code cache. The default | |
| is stat, which stats the top level script (not any included | |
| ones) each time that file is needed, and reloads it if the | |
| modified time indicates it is newer than the one it has | |
| already loaded. The other values cause it to keep the file | |
| cached forever (don't stat and replace) or to never cache the | |
| file. | |
| In general stat or forever is good production and stat or never | |
| for development. | |
| Examples: | |
| LuaCodeCache stat | |
| LuaCodeCache forever | |
| LuaCodeCache never | |
| LuaHookTranslateName /path/to/lua/script.lua hook_function_name | |
| Add a hook (at APR_HOOK_MIDDLE) to the translate name phase of | |
| request processing. The hook function receives a single | |
| argument, the request_rec, and should return a status code, | |
| which is either an HTTP error code, or the constants defined | |
| in the apache2 module: apache2.OK, apache2.DECLINED, or | |
| apache2.DONE. | |
| For those new to hooks, basically each hook will be invoked | |
| until one of them returns apache2.OK. If your hook doesn't | |
| want to do the translation it should just return | |
| apache2.DECLINED. If the request should stop processing, then | |
| return apache2.DONE. | |
| Example: | |
| LuaHookTranslateName /scripts/conf/hooks.lua silly_mapper | |
| -- /scripts/conf/hooks.lua -- | |
| function silly_mapper(r) | |
| if r.uri == "/" then | |
| r.file = "/var/www/home.lua" | |
| return apache2.OK | |
| else | |
| return apache2.DECLINED | |
| end | |
| end | |
| LuaHookFixups /path/to/lua/script.lua hook_function_name | |
| Just like LuaHookTranslateName, but executed at the fixups phase | |
| LuaHookMapToStorage /path/to/lua/script.lua hook_function_name | |
| ... | |
| LuaHookCheckUserID /path/to/lua/script.lua hook_function_name | |
| ... | |
| LuaHookTypeChecker /path/to/lua/script.lua hook_function_name | |
| ... | |
| LuaHookAuthChecker /path/to/lua/script.lua hook_function_name | |
| ... | |
| LuaHookAccessChecker /path/to/lua/script.lua hook_function_name | |
| ... | |
| LuaHookAuthChecker /path/to/lua/script.lua hook_function_name | |
| ... | |
| LuaHookInsertFilter /path/to/lua/script.lua hook_function_name | |
| Not Yet Implemented | |