Os arquivos de configuração normais são lidos apenas uma vez (durante a inicialização e quando solicitado externamente), mas você pode usar o HttpLuaModule para ter um pedaço de script Lua a ser avaliado em cada solicitação. O Nginx fornece 4 fases de requisição (reescrita, acesso, conteúdo, log) nas quais os scripts Lua podem ser executados.
Aqui estão algumas coisas que você pode fazer com o Lua (do manual):
- Mashup'ing and processing outputs of various nginx upstream outputs (proxy, drizzle, postgres, redis, memcached, and etc) in Lua,
- doing arbitrarily complex access control and security checks in Lua before requests actually reach the upstream backends,
- manipulating response headers in an arbitrary way (by Lua)
- fetching backend information from external storage backends (like redis, memcached, mysql, postgresql) and use that information to choose which upstream backend to access on-the-fly,
- coding up arbitrarily complex web applications in a content handler using synchronous but still non-blocking access to the database backends and other storage,
- doing very complex URL dispatch in Lua at rewrite phase,
- using Lua to implement advanced caching mechanism for Nginx's subrequests and arbitrary locations.