Cloud foundry Cloud Foundry环境变量在nginx.conf中不起作用

Cloud foundry Cloud Foundry环境变量在nginx.conf中不起作用,cloud-foundry,swisscomdev,Cloud Foundry,Swisscomdev,我试图创建一个通用的nginx.conf,根据环境执行代理传递 我正在使用cloud foundry静态文件构建包中的fixture 我想根据环境变量设置代理传递 这是proxy.conf的代码: location/api{proxy_pass{{{env“MY_DEV_proxy”};} 我希望我之前设置的_DEV_PROXY环境变量得到解析 相反,当将我的应用程序推到cloud foundry时,我得到: ERR 2019/02/19 08:18:39[emerg]88#0:指令“代理通行

我试图创建一个通用的
nginx.conf
,根据环境执行
代理传递

我正在使用cloud foundry静态文件构建包中的fixture

我想根据环境变量设置代理传递

这是proxy.conf的代码:

location/api{proxy_pass{{{env“MY_DEV_proxy”};}

我希望我之前设置的_DEV_PROXY环境变量得到解析

相反,当将我的应用程序推到cloud foundry时,我得到:

ERR 2019/02/19 08:18:39[emerg]88#0:指令“代理通行证”未以“;”in/home/vcap/app/nginx/conf/includes/proxy.conf:1”终止

使用直接值而不是变量时:

location/api{proxy\u passhttps://my-dev-proxy.com;}

一切正常

cf curl/v2/info&&cf版本:

{
“说明”:“SWISCOM提供的云铸造”,
“min_cli_版本”:“6.42.0”,
“min_推荐的cli_版本”:“最新”,
“api_版本”:“2.128.0”,
“osbapi_版本”:“2.14”,
}


cf版本6.42.0+0cba12168.2019-01-10

如果您使用的是Nginx buildpack,您可以使用文档中的方法访问环境变量

location /api { proxy_pass {{env "MY_DEV_PROXY"}}; }


如果您使用的是Staticfile buildpack,则不能使用Nginx buildpack中的相同功能(至少在编写本文时)

Staticfile buildpack会自动为您生成大部分/所有Nginx配置,因此您在技术上不需要插入任何环境变量。但是,您可以在Staticfile buildpack中包含自定义Nginx代码段,因此您可以从这些代码段中访问环境变量

如果你想这样做,你需要这样做:

  • 请参阅
    自定义位置
    。您需要在
    Staticfile
    中设置可选的
    root
    location\u include
    。这将引用并指示Nginx处理您通过应用程序提供的自定义配置

  • 指定自定义
    erb
    脚本,而不是指定自定义配置文件。例如:
    nginx/conf/includes/custom_header.conf.erb
    。这应该包含您的配置作为模板,但您可以引用环境变量,如
    。您还可以在erb模板中执行任何其他有效操作

    location /api { proxy_pass <%= ENV["MY_DEV_PROXY"] %>; }
    
    当你的应用程序启动时,它将运行此脚本并将你的模板转换为实际的自定义配置。然后Nginx将加载自定义配置


  • 希望有帮助

    我希望我之前设置的_DEV_PROXY环境变量得到解决。
    ->您如何设置环境变量?Nginx不会替换变量,但Nginx构建包会。它只在登台时这样做。您是否设置了该变量,以便在Nginx buildpack运行时在登台期间进行设置@DanielMikusa我正在通过manifest.yml文件设置环境变量。如果运行
    cf env
    ,您会看到什么?我会在用户提供的变量下看到我的开发代理。另外,我也看到过类似于此的报告错误,即使它已关闭,该错误也可能存在?Nginx还是Staticfile?我不认为Staticfile会进行env变量替换,至少在您上面尝试的方式中是这样。根据文档,提供该功能的是Nginx buildpack。我认为您可以使用Staticfile buildpack使其工作,但会有点不同。
    erb nginx/conf/includes/custom_header.conf.erb > nginx/conf/includes/custom_header.conf