我有一个类似这样的nginx块,我想在hello/world请求上运行一个perl脚本。整个设置都在docker中。
我的nginx.conf:
http {
perl_modules perl/lib;
server {
listen 80;
location /hello/world {
perl rewrite.pl;
}
}
字符串
我的docker-compose有这个:
nginx:
image: nginx:perl
ports:
- "8080:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- ./rewrite.pl:/etc/nginx/rewrite.pl
型
然而,当我向/hello/world发出请求时,我在nginx中得到了一个500错误:call_sv(“rewrite.pl“)failed:“Undefined subroutine &main::rewrite.pl called."
有什么可能的吗?
1条答案
按热度按时间kgsdhlau1#
它需要Perl表达式,而不是文件名。
实际上,我怀疑执行文件(可以使用
do
完成)是不好的,因为我怀疑它会污染重用的名称空间。你应该把代码移到一个模块中,然后在配置文件中使用use
MyModule::mysub
来调用模块的mysub
。(记住,模块需要有
.pm
扩展名,并且它必须有一个与其文件名匹配的package
指令。