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は正しい認証で要求をプロキシします。

関連情報