Could anyone help me with nginx with a perl module? I have already managed to create a function in Perl using the ubi8/nginx-124 image but I am not able to set the result of the function in the header.
0
Having this in nginx configuration file:
http {
perl_modules /opt/app-root/etc/nginx/nginx-perl/;
perl_require module1.pm;
perl_set $test module1::handler; #it is not calling the function here, it is only called in the location block
}
location = /perl {
perl module1::handler; #I've already tried with and without this line
add_header X-My-Header $test; #I tried adding the header this way and from within the code with $r.But both without success
}
and this perl file:
package module1;;
use nginx;
sub handler {
my $r = shift;
my $foo = 'foo';
$r->send_http_header("text/html");
$r->header_out("WWW-Authenticate" => $foo);
$r->print("<h3>SUCCESS:</h3>");
return $foo;
}
1;
This is the correct way:
package module1;
use lib '/opt/app-root/etc/nginx/nginx-perl/';
use strict;
use nginx;
sub handler {
my $r = shift;
$r->header_out("X-Custom-Header", "CUSTOM_VALUE"); #This line has to be placed before of send_http_header
$r->send_http_header("text/html");
$r->print("Hello, world!");
return OK;
}
1;
And the configuration file must to be:
http {
perl_modules /opt/app-root/etc/nginx/nginx-perl/;
perl_require module1.pm;
}
location = /perl {
perl module1::handler;
}
Another way could be:
http {
perl_modules /opt/app-root/etc/nginx/nginx-perl/;
perl_require module1.pm;
perl_set $foo module1::handler;
}
location = /perl {
proxy_pass http://aplha.beta.com;
proxy_set_header "X-Custom-Header" $foo;
}
sub handler {
return 'CUSTOM_VALUE';
}