วิธีที่แนะนำอาจจะใช้ a map, เพราะตัวแปรเหล่านี้จะถูกประเมินเมื่อมีการใช้งานเท่านั้น
นอกจากนี้ยังมีการใช้งานreturn 301 ...ที่ต้องการมากกว่าการเขียนใหม่เพราะไม่มีการรวบรวมการแสดงออกปกติ
นี่คือตัวอย่างของการที่ host และ user-agent เป็นสตริงที่ต่อกันถูกเปรียบเทียบกับ regex เดี่ยว:
map "$host:$http_user_agent" $my_domain_map_host {
default 0;
"~*^www.domain.com:Agent.*$" 1;
}
server {
if ($my_domain_map_host) {
return 302 http://www.domain2.com$request_uri;
}
}
และอาจมีความยืดหยุ่นมากขึ้นตัวอย่างเช่นหากมีโดเมนที่เกี่ยวข้องไม่เกิน 2 โดเมน
ที่นี่เรา map www.domain.comกับตัวแทนผู้ใช้เริ่มต้นด้วยการAgentไปhttp://www.domain2.comและwww.domain2.comกับที่แน่นอน user-agent Other Agentเพื่อhttp://www.domain3.com:
map "$host:$http_user_agent" $my_domain_map_host {
default 0;
"~*^www.domain.com:Agent.*$" http://www.domain2.com;
"~*^www.domain2.com:Other Agent$" http://www.domain3.com;
}
server {
if ($my_domain_map_host) {
return 302 $my_domain_map_host$request_uri;
}
}
NBคุณจะต้องใช้ nginx 0.9.0 หรือสูงกว่าเพื่อให้สตริงที่ต่อกันในแผนที่ทำงานได้