我的文件中有以下行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 现在通过正确的身份验证来代理请求。