如何将参数传递给 nginx 命令中使用的文件?

如何将参数传递给 nginx 命令中使用的文件?

我的文件中有以下行nginx.conf

proxy_set_header Authorization "Basic dXNlcjpwYXNzd29yZA==";

目前启动nginx的命令为:

exec nginx -c /etc/nginx/nginx.conf

有没有办法将字符串"Basic dXNlcjpwYXNzd29yZA=="作为参数传递给上面的命令,并使用文件内的值nginx.conf

我的意思是如果这样的事情是可能的:

exec nginx -c /etc/nginx/nginx.conf "Basic dXNlcjpwYXNzd29yZA=="

提前致谢。

答案1

我写了这段代码:在这里的帮助下

#!/bin/sh

json_file=nginx/auth/basic.json
auth_header=$(jq '"Basic " + ("\(.user):\(.pass)" | @base64)' $json_file)

basicAuth=$(cat << EOF
map "" \$basicAuth {\n\tdefault $auth_header;\n}
EOF
)

conf_file=nginx/auth/basic.conf
echo $basicAuth > $conf_file

转换此 json:

{
    "user": "user",
    "pass": "password"
}

进入这个conf文件:

map "" $basicAuth {
    default "Basic dXNlcjpwYXNzd29yZA==";
}

然后我可以将该basic.conf文件导入到我的nginx.conf文件中:

http {
    include auth/auth.conf;
    ...

并在我的特定位置使用:

proxy_set_header Authorization $basicAuth;

Nginx 现在通过正确的身份验证来代理请求。

相关内容