Command-Line

如何將參數傳遞給 nginx 命令中使用的文件?

  • June 1, 2020

我的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=="

提前致謝。

我已經寫了這段程式碼:在here的幫助下

#!/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 現在正在使用正確的身份驗證代理請求。

引用自:https://unix.stackexchange.com/questions/589615