quick start on writing a module?

Piotr Sikora piotr.sikora at frickle.com
Wed Jun 16 20:47:29 MSD 2010


> I wrote "as long as ..." on purpose, as I have no idea what
> postrgess module is able to produce, sorry.
> But as long as it's able to return single value in clear text it
> should be possible to write select which will return all needed
> data separated by newlines.  This should be understood by eval
> module easily.

Oops. You're right. I didn't notice that eval module allowed multiple 
variables until now. In that case, it might be indeed a better fit than 

One note though, you will need to use agentzh's fork of the eval module [1], 
because ngx_postgres currently doesn't work with subrequests in memory.

> This is caused by index module and only applies when uri ends with
> '/'.  Workarounds are obvious, but I doubt they are actually
> needed in this particular case.

Yes, my previous error message was produced by index module,
but the issue exists and should be probably considered a bug:

location / {
  set    $file "/etc/passwd";
  alias  $file;

"GET /aaa" results in:

*4 http script var: "/etc/passwd"
*4 http filename: "/etc/passwdaaa"
*4 add cleanup: 000000020E509C88
*4 open() "/etc/passwdaaa" failed (2: No such file or directory)"
*4 http finalize request: 404, "/aaa?" a:1, c:1

This can indeed be worked-around by using:

location ~ (/.*) {
  set    $file "/etc/passwd";
  alias  $file;

which results in:

*2 http script var: "/etc/passwd"
*2 http filename: "/etc/passwd"
*2 add cleanup: 00000002097A0CA0
*2 http static fd: 12

>From what I can tell "ngx_http_map_uri_to_path()" always adds URI to the 
path, unless you're using captures in the location.

[1] http://github.com/agentzh/nginx-eval-module

Best regards,
Piotr Sikora < piotr.sikora at frickle.com >

More information about the nginx mailing list