Re:The Architecture of Open Source Applications: Nginx
by deathanatos on Monday November 23, 2015 @10:34PM
(#10618995)
It's not just that Lua makes a good config file format, it's that serving HTTP requests is a complicated enough business with enough edge cases and corner cases that it merits a turning complete language.
I actually have some special corner case API endpoints that nginx just simply can not handle in the manner I would prefer. Further, the regex based location syntax, and even the prefix based ones, are not really what you want; you want a "Path" object that's aware of what / in a URL means, and does the right thing if you do/don't add it to the URL. (And it's not as easy as "/foo/bar/baz/?")
Re:The Architecture of Open Source Applications: Nginx
by SomeCallMeTim on Tuesday November 24, 2015 @02:04PM
(#10622780)
In Nginx, you can use Lua for complex routing and responses, with the right extensions. [1]
Re:The Architecture of Open Source Applications: Nginx
by deathanatos on Tuesday November 24, 2015 @09:35PM
(#10625047)
And we do. We don't use openresty (at least at the moment), we use a custom-built nginx that includes — among other things — the lua module. It's a great boon, but something things are still hard or impossible[1], and we don't use it for every request, opting for the location syntax, and all its flaws, for most.
[1]. Conditionally streaming an upload to a backend (i.e., if auth fails, don't stream) is impossible; nginx will buffer the entire request body, either in memory or on disk, and there is no way to change this behavior.
Web servers can have notoriously complex configs, up to the point where designing a mini-language might a worse idea than stripping down an embeddable language, such as Lua.
Lua, especially when sandboxed, seems like a fitting configuration language: http://stackoverflow.com/questions/1224708/how-can-i-create-...