I am new to nginx module development and I’m working on my first ever
module. I’ve read up Evan M.'s post besides others, and I’ve
experimented tweaking some simple modules.
From what I understand, proxy_pass module is a handler and we can
effectively have just one handler run on a request. What I need is to do
some work with the content before I send a request to the upstream
servers.
I have been able to achieve the reverse via filter modules, but not
this. Is
there an way to achieve this without touching proxy_pass?
The requirement comes from a server rewrite we are doing to improve
performance. We have nginx load balancing requests to a bunch of servers
running python. We decided to rewrite some of the python pre-processing
in
C/C++ and write an nginx module to wrap around it.
i’m not 100% sure to understand exactrly what you’d like to do,
especially the request-body-manipulation-part.
nginx_lua is usually quite handy when you have the need
to manipulate a request:
you can jump into the acces- or rewrite-phase, make your processing and
pass the result to your upstream-servers using proxy_pass and all the
upstream {} - goodies
I tried ngx_lua but I might’ve been doing something wrong. It
complained that I am not allowed to use “proxy_pass” following a
content rewrite.
you should read the documentatrion carefully:
“Do not use this directive and other content handler directives in the
same
location.
For example, this directive and the proxy_pass directive should not be
used
in the same location.”
what you can do is use the access_by_lua or rewrite_by_lua - directive