Variables NGINX:set_by_lua不起作用

Variables NGINX:set_by_lua不起作用,variables,nginx,lua,Variables,Nginx,Lua,我让NGINX作为代理服务运行,并希望根据Docker Compose文件中的$ENV变量设置SSL密钥 我在nginx.conf中添加了: 然后在配置文件中: server { resolver 10.0.0.4 valid=300s; resolver_timeout 60s; server_name _; listen 443; ssl on; # perl_set $envkey 'sub { return $ENV{"ENVKE

我让NGINX作为代理服务运行,并希望根据Docker Compose文件中的$ENV变量设置SSL密钥

我在nginx.conf中添加了:

然后在配置文件中:

server {

    resolver 10.0.0.4 valid=300s;
    resolver_timeout 60s;

    server_name  _;

    listen 443;

    ssl on;

#    perl_set $envkey 'sub { return $ENV{"ENVKEY"}; }';
    set_by_lua $envkey 'return os.getenv("ENVKEY")';

    ssl_certificate /etc/nginx/ssl/jm-website-$envkey.crt;
    ssl_certificate_key /etc/nginx/ssl/jm-website-$envkey.key;
我还尝试在http或服务器块中使用perl_集,但它只能用于位置,而不能用于ssl_证书

使用set_by_lua-我有一个错误:

nginx:[emerg]BIO_new_文件/etc/nginx/ssl/jm网站-$envkey.crt 失败的SSL:错误:020001002:系统库:fopen:没有此类文件或 目录:fopen'/etc/nginx/ssl/jm网站-$envkey.crt','r' 错误:2006D080:BIO例程:BIO_新文件:无此类文件

尽管环境中存在变量:

root@d0718b0a3361:/etc/nginx# echo $ENVKEY
dev
我做错了什么?
也许有更好的方法?

我确实知道这是一个旧线程。为了子孙后代,我发布了这篇文章

我和你有同样的问题

现在发生的是有一个命令。证书验证后立即发生set_by_lua

您可以使用自己选择的呈现引擎(例如python jinja)呈现nginx.conf,也可以编写自己的从环境变量读取的引擎。你也可以查一下

希望有帮助:

root@d0718b0a3361:/etc/nginx# echo $ENVKEY
dev