2011年3月1日星期二

Re: Catch ALL requests by LUA-script

On Tue, Mar 1, 2011 at 3:34 PM, andiL <nginx-forum@nginx.us> wrote:
>
> What i would like to to:
> Is it possible to create a location-entry in the nginx.conf that ALL
> requests coming to the Server are handled by a LUA-script?
>

I've just allowed use of rewrite_by_lua_file (and its friends) at the
server and http block levels in ngx_lua's git master HEAD (
http://github.com/chaoslawful/lua-nginx-module ).

Here's a small example from the ngx_lua test suite:

server {
listen 1984;
server_name 'localhost';

location / {
root html;
index index.html index.htm;
}

access_by_lua 'ngx.header["X-Foo"] = "bar" ngx.send_headers()';
}

Then

curl -i localhost:1984/

gives

HTTP/1.1 200 OK
Server: nginx/0.8.54 (without pool)
Date: Tue, 01 Mar 2011 08:34:45 GMT
Content-Type: text/plain
Transfer-Encoding: chunked
Connection: keep-alive
X-Foo: bar

<html><head><title>It works!</title></head><body>It works!</body></html>

This is just for demonstration purposes, blindly sending headers
directly from within an access or rewrite handler is usually
considered bad practice ;)

> i.e. i have set the *.php and / locations to internal so only the lua
> script should have access to the files (it's responsible for the in- and
> output)
>

Well, you do not need an ad-hoc location for this. Use directive
inheritance instead.

>
> Background: I would like to have a LUA-script which handles every
> request and filters certain Headers, Parameters, etc.
>

Hopefully my solution given above works for you :)

Cheers,
-agentzh

_______________________________________________
nginx mailing list
nginx@nginx.org
http://nginx.org/mailman/listinfo/nginx

没有评论:

发表评论