将自定义环境变量设置为 psgi hash plack
Set custom environment variable to psgi hash plack
当我向 dumper $env 发出请求时,我得到了环境哈希 psgi 的所有数据,在这个例子中
sub {
my $env = shift;
return [ 200, [], [ $env->{REMOTE_ADDR} ] ];
}
或更直接
sub {
return [ 200, [], [ shift->{REMOTE_ADDR} ] ];
}
输出:
Returns客户端IP地址
如何将自己的 自定义环境变量设置为 psgi hash plack?
为什么我要这样做,我的情况与:
Nginx variables similar to SetEnv in Apache?
如果做不到,我可以创建子类并将该功能添加到 psgi 网络服务器吗?
感谢您的宝贵时间
假设您想在应用程序服务器中设置变量,这看起来是一些 plack 中间件的完美案例。对于这种情况,我找到了 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
环境变量。
当我向 dumper $env 发出请求时,我得到了环境哈希 psgi 的所有数据,在这个例子中
sub {
my $env = shift;
return [ 200, [], [ $env->{REMOTE_ADDR} ] ];
}
或更直接
sub {
return [ 200, [], [ shift->{REMOTE_ADDR} ] ];
}
输出:
Returns客户端IP地址
如何将自己的 自定义环境变量设置为 psgi hash plack?
为什么我要这样做,我的情况与: Nginx variables similar to SetEnv in Apache?
如果做不到,我可以创建子类并将该功能添加到 psgi 网络服务器吗?
感谢您的宝贵时间
假设您想在应用程序服务器中设置变量,这看起来是一些 plack 中间件的完美案例。对于这种情况,我找到了 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
环境变量。