【问题标题】:NGINX + PERL > trying to create a reverse DNS variableNGINX + PERL > 试图创建一个反向 DNS 变量
【发布时间】:2016-10-18 09:43:18
【问题描述】:

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

2016/06/16 21:10:33 [错误] 25853#0: *519 call_sv("sub { 返回标量 gethostbyaddr(inet_aton($remote_addr), AF_INET); }“) 失败的: “在 (eval 3) 第 1 行调用了未定义的子例程 &main::inet_aton。”

添加到我的 http 块中:

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

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

【问题讨论】:

    标签: perl nginx dns


    【解决方案1】:

    我不知道 perl_require 的确切作用,但我认为它与 Perl 的 require 函数有关,当你使用 require 时要小心的是它不会调用包的import 方法,并且不会将默认导出的函数和符号加载到调用包中。

    结果是您必须在 Perl 调用中使用限定符号名称

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

    否则你将不得不调用Socketimport方法

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

    (第二个建议未经测试,可能无法正常工作,具体取决于 nginx 对 perl 的库目录和搜索路径所做的操作)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-15
      相关资源
      最近更新 更多