将自定义环境变量设置为psgi hash plack

时间:2018-04-20 12:39:38

标签: perl hash plack psgi

当我向dumper $ env请求时,我获取了enviromment hash psgi的所有数据,在这个例子中

sub { 
  my $env = shift;  
  return [ 200, [], [ $env->{REMOTE_ADDR} ] ];  
}

或更直接

sub { 
  return [ 200, [], [ shift->{REMOTE_ADDR} ] ];   
}

输出:

返回客户端的IP地址

如何将自己的自定义环境变量设置为psgi hash plack

为什么我要这样做,我的情况与: Nginx variables similar to SetEnv in Apache?

如果无法做到这一点,我可以创建子类并将该功能添加到psgi Web服务器吗?

感谢您的时间

1 个答案:

答案 0 :(得分:1)

假设您想在应用程序服务器中设置变量,这看起来像是一些普通中间件的完美案例。对于这种情况,我找到了Plack::Middleware::ReviseEnv,它可以在app.psgi中使用:

# app.psgi
use Plack::Builder;

my $app = sub {
    return [ 200, [], [ shift->{var} ] ];
};

builder {
    enable "ReviseEnv", revisors => { 'var'  => 'custom',
                                      'var2' => 'other' };
    $app;
};

该文档还列出了用于设置除简单文本之外的值的其他选项,例如包括其他$env数据或%ENV环境变量。

相关问题