Docker 让nginx根据环境变量在响应上设置头
我使用一个简单的Nginx docker容器来提供一些静态文件。我使用Kubernetes将此容器部署到不同的环境(例如,暂存、生产等),Kubernetes在容器上设置了一个环境变量(比如Docker 让nginx根据环境变量在响应上设置头,docker,nginx,Docker,Nginx,我使用一个简单的Nginx docker容器来提供一些静态文件。我使用Kubernetes将此容器部署到不同的环境(例如,暂存、生产等),Kubernetes在容器上设置了一个环境变量(比如FOO\u COUNT) 让Nginx在每个响应上传递FOO\u COUNT值作为头,而不必为每个环境构建不同的容器,最简单的方法是什么?开箱即用,Nginx不支持大多数配置块中的环境变量。但是,你可以使用 只需在名为的nginx容器中创建一个可用的配置模板,例如/etc/nginx/conf.d/mysit
FOO\u COUNT
)
让Nginx在每个响应上传递
FOO\u COUNT
值作为头,而不必为每个环境构建不同的容器,最简单的方法是什么?开箱即用,Nginx不支持大多数配置块中的环境变量。但是,你可以使用
只需在名为的nginx容器中创建一个可用的配置模板,例如/etc/nginx/conf.d/mysite.template
它包含您的nginx配置,例如:
location / {
add_header X-Foo-Header "${FOO_COUNT}";
}
然后使用
/bin/bash -c "envsubst < /etc/nginx/conf.d/mysite.template > /etc/nginx/conf.d/default.conf && nginx -g 'daemon off;'"
/bin/bash-c“envsubst/etc/nginx/conf.d/default.conf&&nginx-g‘守护进程关闭’”
如果您使用的是docker compose.yml
文件,请使用
Kubernetes.这是在nginx 1.19+中实现的。此功能现在已内置 您只需将
default.conf.template
文件(它查找*.template后缀)添加到/etc/nginx/templates
,启动脚本将在其上运行envsubt
,并输出到/etc/nginx/conf.d
阅读更多信息,请参见此处的示例另请参见本文。讨论@lifeisfooThanks给出的类似技巧。看来我必须深入到Kubenetes文档中才能在pod上生成模板。不客气。请接受答案,如果它能解决您的问题,这将有助于未来的访客。