내 파일에 다음 줄이 있습니다 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는 이제 올바른 인증으로 요청을 프록시합니다.