docker - 带有 envsubst 引号问题的 Nginx 配置
问题描述
Docker入口文件:
if
[ ${BASIC_AUTH_ENABLED} = "true" ];
then
export BASIC_AUTH_ENABLED="Private site";
else
export BASIC_AUTH_ENABLED=off;
fi
envsubst '${BASIC_AUTH_ENABLED}' < /etc/nginx/conf.d/default.conf > /etc/nginx/conf.d/default.conf
我BASIC_AUTH_ENABLED
在 docker compose 中设置 var:
version: '2'
services:
site:
restart: always
image: "199.99.9.99:5000/site:dev"
ports:
- 8287:80
environment:
- BASIC_AUTH_ENABLED=true
Nginx 抱怨:nginx: [emerg] invalid number of arguments in "auth_basic" directive
. 如果我使用 just "Private"
,那么它可以工作。我想念什么?
更新 1
默认配置:
location / {
root /usr/share/nginx/html;
auth_basic ${BASIC_AUTH_ENABLED};
auth_basic_user_file /etc/nginx/.htpasswd;
try_files $uri $uri/ /index.html;
}
解决方案
我怀疑这是一个引用问题。这是在黑暗中拍摄的:
Nginx 的配置行需要一个字符串参数,这就是你使用"Private"
. 替换后,配置文件中的行将如下所示:
auth_basic Private;
一切都好,一个论据。
如果改为使用"Private site"
,替换后将如下所示:
auth_basic Private site;
所以,基本上有两个字符串参数,因为没有引号。尝试使您的脚本适应如下内容:
export BASIC_AUTH_ENABLED='"Private site"';
这应该导致:
auth_basic "Private site";
推荐阅读
- mongodb - 如何从 mongodb 中获取年龄组数据
- html - 创建具有自定义列大小的html表
- ios - 如何将数据从一个模型传递到另一个模型?
- javascript - 使用类为元素应用样式的 withStyles 错误
- python - 多进程环境中的 cx_Oracle python delete 语句
- python - 从三个文本中计算单词
- reactjs - find 仅返回日期的第一个数据
- java - springboot中的调度器,用于spring批处理的大数据交替
- algorithm - 您如何计算具有多个来源的 Djikstra 热图?
- swift - 如果集合视图位于 UIScrollView 中,是否会重用 UICollectionViewCell?