NGINX + PERL>试图创建一个反向DNS变量

时间:2016-06-16 18:16:07

标签: perl nginx dns

基于Reverse DNS lookup in perl我试图在NGINX中创建一个变量,所以我可以使用它来识别搜索引擎,但我有很多这样的错误:

  

2016/06/16 21:10:33 [错误] 25853#0:* 519 call_sv(“sub {return scalar   gethostbyaddr(inet_aton($ remote_addr),AF_INET); })失败:   “Undefined subroutine& main :: inet_aton在(eval 3)第1行调用。”

添加到我的http块中:

perl_require Socket.pm;
perl_set $test_rdns "sub { return scalar gethostbyaddr(inet_aton($remote_addr), AF_INET); }";

请帮忙,我找不到解决这个问题的关键。

1 个答案:

答案 0 :(得分:0)

我不确切知道perl_require到底是做什么的,但我认为它与Perl的require函数有关,而且当你使用require时需要警惕的是它不会调用包的import方法,也不会将默认的导出函数和符号加载到调用包中。

结果是您必须在Perl调用中使用合格的符号名称

perl_set $test_rdns "sub { return scalar gethostbyaddr(Socket::inet_aton($remote_addr), \
                                                       Socket::AF_INET); }";

或者您必须致电Socket的{​​{1}}方法

import

(第二个建议没有经过测试,根据nginx对perl的库目录和搜索路径的影响,可能无效)