Variables NGINX:set_by_lua不起作用
我让NGINX作为代理服务运行,并希望根据Docker Compose文件中的$ENV变量设置SSL密钥 我在nginx.conf中添加了: 然后在配置文件中: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
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