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