【问题标题】:Environment variable for nginx conf extrapolationnginx conf 外推的环境变量
【发布时间】:2016-08-07 14:10:36
【问题描述】:

我使用confd 来根据我的环境呈现我的配置文件

$ ls -R /etc/confd
/etc/confd/:
conf.d  templates

/etc/confd/conf.d:
my_app.toml

/etc/confd/templates:
my_app.tmpl

我的配置:

$ cat /etc/confd/conf.d/my_app.toml
[template]
src = "my_app.tmpl"
dest = "/etc/nginx/sites-enabled/my_app.conf"
$ cat /etc/confd/templates/my_app.tmpl
# ...
    location @rewriteapp {
        rewrite ^(.*)$ /{{ getenv "/app/entry/point" }}/$1 last;
    }
# ...

confd 运行良好

$ export APP_ENTRY_POINT="app_dev.php"
$ confd -onetime -backend env
2016-04-15T13:54:29Z 1c682a040707 /usr/local/bin/confd[44]: INFO Backend set to env
2016-04-15T13:54:29Z 1c682a040707 /usr/local/bin/confd[44]: INFO Starting confd
2016-04-15T13:54:29Z 1c682a040707 /usr/local/bin/confd[44]: INFO Backend nodes set to
2016-04-15T13:54:29Z 1c682a040707 /usr/local/bin/confd[44]: INFO Target config /etc/nginx/sites-enabled/my_app.conf out of sync
2016-04-15T13:54:29Z 1c682a040707 /usr/local/bin/confd[44]: INFO Target config /etc/nginx/sites-enabled/my_app.conf has been updated

但是生成的文件并没有解析到变量

$ cat /etc/nginx/sites-enabled/my_app.conf
# ...
    location @rewriteapp {
        rewrite ^(.*)$ //$1 last;
#                       ^- I should have app_dev.php between the `//`
    }
# ...
  • 我在这里做错了吗?
  • 如何调试?

【问题讨论】:

    标签: nginx confd


    【解决方案1】:

    what is documentedconfd (0.11.0) getenv 不同,函数似乎不期望环境变量作为路径/app/entry/point

    环境变量确实保持原样:APP_ENTRY_POINT

    所以模板应该简单地说:

    $ cat /etc/confd/templates/my_app.tmpl
    # ...
        location @rewriteapp {
            rewrite ^(.*)$ /{{ getenv "APP_ENTRY_POINT" }}/$1 last;
        }
    # ...
    

    -debug-verbose 选项可以检查发生了什么

    【讨论】:

    • 您链接的页面使用getv,而不是getenv。您确定这不是您遇到的实际错误吗?
    猜你喜欢
    • 2014-03-18
    • 1970-01-01
    • 1970-01-01
    • 2019-02-21
    • 2014-08-12
    • 1970-01-01
    • 2018-08-15
    • 1970-01-01
    • 2017-03-28
    相关资源
    最近更新 更多