Yah saya punya pertanyaan yang sedikit berbeda dari yang ini : Saya tidak ingin memetakan dua variabel secara bersamaan, saya ingin memetakan satu variabel menggunakan dua lainnya sebagai parameter.
Memang saya telah membaca di dokumentasi tentang arahan peta itu:
Sebelum versi 0.9.0 hanya satu variabel yang dapat ditentukan dalam parameter pertama.
Jadi, karena saya memiliki nginx 1.8, saya berharap dapat menggunakan lebih dari satu variabel pada parameter pertama.
Ini membuat saya berpikir bahwa saya bisa menulis sesuatu seperti dua arahan peta terakhir dalam contoh ini:
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" "" "";
}
Tetapi tidak berhasil ( nginx -t
mengembalikan a
jumlah argumen dalam arahan "peta" tidak valid
)
Jadi, bagaimana mungkin untuk menentukan beberapa variabel di parameter pertama? Atau, apa yang sebenarnya dimaksud dengan dokumentasi, jika saya salah paham?
sumber
Jawaban:
Anda salah mengerti dokumen nginx. Ini berarti bahwa sebelum versi 0.9 argumen pertama
map
harus variabel tunggal dan tidak ada yang lain. Karena versi 0.9.0 argumen pertama dapat berupa string dengan sejumlah variabel apa pun untuk diinterpolasi.Di sini terlihat seperti bagaimana blok pertama Anda:
sumber