私のファイルには次の行があります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は正しい認証で要求をプロキシします。