根据环境var,在响应时设置nginx头

时间:2017-09-26 13:48:51

标签: docker nginx

我使用一个简单的Nginx docker容器来提供一些静态文件。我使用Kubernetes将此容器部署到不同的环境(例如登台,生产等),Kubernetes在容器上设置环境变量(假设为FOO_COUNT)。

让Nginx在每个响应中将FOO_COUNT的值作为标头传递的最简单方法是什么,而不必为每个环境构建不同的容器?

2 个答案:

答案 0 :(得分:2)

开箱即用,nginx不支持大多数配置块中的环境变量。但是,您可以使用envsubst as explained in the official nginx Docker image

只需创建一个可在您名为的nginx容器中使用的配置模板,例如: /etc/nginx/conf.d/mysite.template

它包含你的nginx配置,例如:

location / {
    add_header X-Foo-Header "${FOO_COUNT}";
}

然后使用

覆盖Dockerfile命令
/bin/bash -c "envsubst < /etc/nginx/conf.d/mysite.template > /etc/nginx/conf.d/default.conf && nginx -g 'daemon off;'"

如果您使用的是docker-compose.yml文件,请使用command

Kubernetes provides a similar way to override the default command in the image

答案 1 :(得分:0)

这在 nginx 1.19+ 中成为可能。此功能现已内置。

您需要做的就是将您的 default.conf.template 文件(它查找 *.template 后缀)添加到 /etc/nginx/templates,启动脚本将在其上运行 envsubst,并输出到 { {1}}。

docs 阅读更多内容,请在此处查看示例 https://devopsian.net/notes/docker-nginx-template-env-vars/