首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nginx配置与envsubst引号问题

Nginx配置与envsubst引号问题
EN

Stack Overflow用户
提问于 2019-05-04 09:11:40
回答 1查看 1.3K关注 0票数 1

码头入口档案:

代码语言:javascript
复制
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 var:

代码语言:javascript
复制
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

default.conf:

代码语言:javascript
复制
location / {
  root /usr/share/nginx/html;
  auth_basic ${BASIC_AUTH_ENABLED};
  auth_basic_user_file /etc/nginx/.htpasswd;
  try_files $uri $uri/ /index.html;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-04 12:06:12

我怀疑这是一个引证问题。下面是一张黑暗中的照片:

Nginx的配置行需要一个字符串参数,这是使用"Private"时得到的。替换之后,配置文件中的行将如下所示:

代码语言:javascript
复制
auth_basic Private;

很好,一个理由。

如果您使用的是"Private site",则替换后的结果如下所示:

代码语言:javascript
复制
auth_basic Private site;

因此,基本上有两个字符串参数,因为没有引号。试着使您的脚本适应这样的情况:

代码语言:javascript
复制
export BASIC_AUTH_ENABLED='"Private site"';

这应导致:

代码语言:javascript
复制
auth_basic "Private site";
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55981082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档