Sub-request using Parent Request Body
Roman Vasilyev
roman at anchorfree.com
Fri Jan 7 03:33:21 MSK 2011
On 01/05/2011 09:02 PM, agentzh wrote:
> On Wed, Jan 5, 2011 at 8:20 AM, Roman Vasilyev<roman at anchorfree.com> wrote:
>
>> Let me show one variant of nginx.conf's:
>> location / {
>> include proxy.conf;
>> eval_subrequest_in_memory off;
>> eval_override_content_type text/plain;
>> eval $res {
>> include spam_fastcgi.conf;
>> if ( $request_method = POST) {
>> fastcgi_pass unix:/var/run/nginx/cgiwrap-dispatch.sock;
>> }
>> }
>> if ( $res = SPAM) {
>> rewrite ^ /terms-of-use.html redirect;
>> }
>> }
>>
> Please try the following:
>
> location = /check-spam {
> internal;
>
> include spam_fastcgi.conf;
> fastcgi_pass unix:/var/run/nginx/cgiwrap-dispatch.sock;
> }
>
> location / {
> client_max_body_size 100k;
> client_body_buffer_size 100k;
>
> lua_need_request_body on;
>
> rewrite_by_lua '
>
Thank you for quick response, and I afraid of my stupid questions about
embedded lua but :) :
1) I'm using current development nginx-0.9.3 (my internals need huge
table ~350k domain records for 2 different nginx parameters) and doable
in current version.
2) when I'm just including *rewrite_by_lua* with simple return, I'm
loosing all headers from parent cite, please help me with best solution
for that.
3) why you prefer NDK to clear nginx environment?
> if ngx.var.request_method ~= "POST" then
> return
> end
> local res = ngx.location.capture(
> "/check-spam",
> { method = "POST", body = ngx.var.request_body }
> )
> if res.body == "SPAM" then
> return ngx.redirect("/terms-of-use.html")
> end
> ';
>
> # ... your normal fastcgi_pass/proxy_pass/etc settings
> # go here ...
> }
>
> Please note that you need the git HEAD of the "master" branch of the
> ngx_lua git repos:
>
> https://github.com/chaoslawful/lua-nginx-module
>
>
>> I have some foreign spam analyzer which I'm running like fastcgi server
>> written in perl.
>> I tried to use $request_body as fastsgi_param arg, it was empty;
>> Wrote module which creates $post_body var in rewrite stage and with echo
>> $post_body it works, but on subrequest it gives empty body (I guess because
>> it not passing POST into subrequest)
>> maybe somebody have any ideas how to realize it other way, or may be how to
>> get POST in subrequest?
>>
>>
> If you have further issues, feel free to report here ;)
>
> Happy nginx.conf hacking!
> -agentzh
>
More information about the nginx
mailing list