2012-02-06 12 views
5

पर आधारित प्रतिक्रिया मेरे पास nginx 1.0.8 स्थापित है। यहां मेरी समस्या है: मेरे पास 2 फाइलें हैं: file1.js और file2.jsnginx - अनुरोधित शीर्षलेख

www.mysite.com/files_dir/%user%/file.js

का अनुरोध हेडर हैं:: अनुरोध पथ कुछ इस तरह है "एक्स हैडर" मौजूद है और है मान "ठीक" तो उत्तर दिया गया सामग्री file1.js और file2.js होना चाहिए।

फ़ाइलें "html/files_dir" में स्थित हैं और% उपयोगकर्ता% निर्देशिकाओं का एक सेट है जो मेरी सेवा के माध्यम से पंजीकृत उपयोगकर्ता नामों का प्रतिनिधित्व करता है।

मैं इसे nginx में कैसे कॉन्फ़िगर कर सकता हूं? मुझे php, asp या इसी तरह की तकनीकों में दिलचस्पी नहीं है, अगर यह nginx के साथ संभव है।

धन्यवाद

उत्तर

9

map यदि आप किसी अन्य चर के आधार पर एक वेरिएबल का मान निर्धारित करने देगा। maphttp स्तर पर घोषित किया जाना चाहिए (यानी server के बाहर):

map $http_x_header $file_suffix { 
    default "2"; 
    OK  "1"; 
}; 

फिर location निम्नलिखित अपने नए चर $file_suffix

location ~ ^(/files_dir/.+)\.js$ { 
    root html; 
    try_files $1$file_suffix.js =404; 
} 
1

आप इसे आसानी से nginx के साथ कर सकते हैं। यह उदाहरण है:

location /files_dir/ { 

    set $file = file2.js; 
    if ($http_x_header = OK) { 
     set $file = file1.js; 
    } 
    rewrite ^(/files_dir/.*)/file.js$ $1/$file last; 

} 

आप nginx here में HTTP चर के बारे में पढ़ सकते हैं, और nginx पुनर्लेखन मॉड्यूल के बारे में here

+0

धन्यवाद का उपयोग कर चाल करना चाहिए आप कर रहे हैं इस सवाल का जवाब भी अच्छा है, लेकिन सेट था $ फ़ाइल = file2.js; बिना "=" है .. बस $ file file2.js सेट करें; –

+2

मैं स्थान पर ifs का उपयोग करते समय http://wiki.nginx.org/IfIsEvil पढ़ने की अनुशंसा करता हूं। – MyGGaN