在nginx.conf中.
设置一个变量通过后set $name value
,我可以参考它像$name
,
但是,当我导出OS环境变量时env name_from_env
,如https://nginx.org/en/docs/ngx_core_module.html#env所述,我确信name_from_env是有效的,它定义了nginx的父进程.
但是,我的朋友们,如何参考呢?$ name_from_env或$ {name_from_env}或%name_from_env%无效,我以前尝试过.
nginx 目前没有内置的在配置中引用其环境变量的能力。然而,最简单的解决方案是perl_set
来自ngx_http_perl_module的指令,这是 nginx 的一个额外模块。官方 nginx 包动态构建 Perl 模块,因此这是确保您安装额外nginx-module-perl
包的情况(或配置您的 nginx 自定义构建,如果这是您正在做的)。
配置如下所示:
# Make environment variable available
env NAME_FROM_ENV;
# Load dynamic module (if built with Perl as dynamic module; omit if static)
load_module modules/ngx_http_perl_module.so;
http {
server {
location / {
# Use Lua to get get and set the variable
perl_set $name_from_env 'sub { return $ENV{"NAME_FROM_ENV"}; }';
...
}
}
}
Run Code Online (Sandbox Code Playgroud)
另请参阅https://docs.apitools.com/blog/2014/07/02/using-environment-variables-in-nginx-conf.html了解如何使用 Lua 实现相同的功能。Lua 支持需要第三方模块,并且不随 nginx 的默认包一起提供。
cli*_*lls -1
它应该是 $name_from_env,就像任何其他 Nginx 变量一样。
请注意,env 只能在配置的主要部分中使用,不能在 http、server 或 location 块中使用。
我猜 env 无论如何都不是您真正需要的。如果您尝试将变量传递给您的应用程序,您应该使用 proxy_param 或 fastcgi_param (取决于您与上游的对话方式):
fastcgi_param MYVAR foo;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10267 次 |
最近记录: |