gpt4 book ai didi

docker - 带有 envsubst 引号问题的 Nginx 配置

转载 作者:行者123 更新时间:2023-12-02 19:04:05 28 4
gpt4 key购买 nike

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 .如果我只使用 "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";

关于docker - 带有 envsubst 引号问题的 Nginx 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55981082/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com