Daniel, I have successfully implemented the router in lua using a lua script called from a "LuaHookFixups" directive.
LuaHookFixups /var/www/lua/myscript.lua router -- /var/www/lua/myscript.lua function router(r) local route = get_route(r) if route then r.filename = "proxy:balancer://" .. route .. r.uri end return apache2.DECLINED end For the second requirement- i wired up a LuaOutputFilter which can catch the custom response code. What i was not able to figure out was how to send the request back to the backend. LuaOutputFilter myfilter /var/www/lua/myscript.lua output_filter function output_filter(r) if r.status ~= 399 then return end coroutine.yield() while bucket ~= nil do coroutine.yield(bucket) end coroutine.yield() end Is it possible to retry the request again from the output filter ? Regards, Jose On Fri, Dec 18, 2015 at 9:42 PM, Daniel Gruno <humbed...@apache.org> wrote: > I think you need two phases here, as mod_lua doesn't itself do the > proxying, but delegates it to mod_proxy. > > First, http://modlua.org/recipes/loadbalancing will show you how to proxy. > > Secondly, you could then set up a handler for the specific HTTP code > using ErrorDocument or an output filter. > > I haven't tried this myself (the 'act on return code'), but it should work. > > With regards, > Daniel. > > On 12/18/2015 04:23 PM, Jim Jagielski wrote: > > I'm not a mod_lua expert, esp as it relates to exposing the > > full Apache httpd API... it is possible that using r.handler > > and specifying the proxy may work. > > > >> On Dec 18, 2015, at 8:05 AM, Jose Thomas <jos...@gmail.com> wrote: > >> > >> Jim, > >> > >> Sorry, I could not find the documentation on how to do this using > mod_lua. Can you please point me there ? > >> > >> In my current setup which is on httpd 2.2 - we use modpython. For > routing requests (based on a header) we use a simple python script. For > refiring the request (when a custom response code is received), another > python script is configured in a "PythonOutputFilter". That script > internally uses the python requests library. > >> > >> We are upgrading to httpd 2.4 and wanted to see if this code can be > ported to mod_lua. I have already ported the first script (routing) to lua. > Where i am clueless, is how to resend the request to backend for the 2nd > script in a "LuaOutputFilter". > >> > >> Thanks & regards, > >> Jose > >> > >> On Fri, Dec 18, 2015 at 5:08 PM, Jim Jagielski <j...@jagunet.com> wrote: > >> In general, if you prepend the URL w/ 'proxy:' and then > >> use it in a subrequest, it will be processed as a proxy > >> request. > >>> On Dec 17, 2015, at 9:21 AM, Jose Thomas <jos...@gmail.com> wrote: > >>> > >>> All, > >>> > >>> I am using httpd 2.4 with mod_proxy (http) routing requests to > multiple backends. > >>> > >>> I have a strange requirement. If a backend responds with a custom > response code - i need to re-execute the request to a different backend. > >>> > >>> What would be the right way to implement this functionality ? > >>> > >>> I was looking at mod_lua for a solution. The idea is to use a > "LuaOutputFilter" to check the response code, and then re-execute the > request with a different backend. How can i refire the request ? Should i > use a lua httpclient library for this ? Is there a easier way to do this ? > >>> > >>> Any other suggestions/comments are welcome. > >>> > >>> Version of stack > >>> * Apache 2.4.6 > >>> * Lua 5.1.4 > >>> > >>> Regards, > >>> Jose > >>> ____________ > >>> > >>> > >>> > >> > >> > >> --------------------------------------------------------------------- > >> To unsubscribe, e-mail: users-unsubscr...@httpd.apache.org > >> For additional commands, e-mail: users-h...@httpd.apache.org > >> > >> > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: users-unsubscr...@httpd.apache.org > > For additional commands, e-mail: users-h...@httpd.apache.org > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@httpd.apache.org > For additional commands, e-mail: users-h...@httpd.apache.org > >