글쎄, 나는 이것과 약간 다른 질문을 가지고 있습니다 : 나는 동시에 두 개의 변수를 매핑하고 싶지 않고 두 개의 다른 변수를 매개 변수로 사용하여 하나의 변수를 매핑하고 싶습니다.
버전 0.9.0 이전에는 첫 번째 매개 변수에 단일 변수 만 지정할 수있었습니다.
따라서 nginx 1.8이 있으므로 첫 번째 매개 변수에서 단일 변수 이상을 사용할 수있을 것으로 기대합니다.
이 예제에서 두 개의 마지막 맵 지시문과 같은 것을 작성할 수 있다고 생각하게되었습니다.
map $http_user_agent $bot {
default "";
"~*Googlebot" "yes";
"~*MJ12bot" "yes";
"~*bingbot" "yes";
etc.
}
map $request $bot $np {
default "" "";
default "yes" "";
"~*newproject" "" "yes";
"~*newproject" "yes" "";
}
map $bot $np $regular {
"" "" "yes";
"" "yes" "";
"yes" "" "";
}
그러나 작업 (하지 않는 nginx -t
반환
“map”지시문에서 유효하지 않은 수의 인수
)
그렇다면 첫 번째 매개 변수에 여러 변수를 어떻게 지정할 수 있습니까? 아니면 내가 잘못 이해했을 때 실제로 문서를 의미하는 것은 무엇입니까?
답변
당신은 nginx의 문서를 오해했습니다. 버전 0.9 이전의 첫 번째 인수는 map
단일 변수 여야하며 그 밖의 것은 없어야합니다. 버전 0.9.0부터 첫 번째 인수는 보간 할 변수 수가있는 문자열 일 수 있습니다.
첫 번째 블록은 다음과 같습니다.
map "$bot:$request" $np {
default "";
"~^yes:" "";
"~*^:.*newproject" "yes";
}