nginx

2011-09-26 23 views
7

का उपयोग कर सीडीएन को अनुरोध पर पुनर्निर्देशित करें मेरे पास कुछ सर्वर एड्रेस हैं, जैसे cdn1.website.com, cdn2.website.com, cdn3.website.com। उनमें से प्रत्येक सिमिलर फाइलें रखती है।nginx

अनुरोध मेरे सर्वर पर आता है और मैं इसे यादृच्छिक सीडीएन सर्वर पर रीडायरेक्ट या फिर लिखना चाहता हूं। क्या यह संभव है?

उत्तर

7

आप split clients मॉड्यूल का उपयोग कर की कोशिश कर सकते:

http { 

    # Split clients (approximately) equally based on 
    # client ip address 
    split_clients $remote_addr $cdn_host { 
    33% cdn1; 
    33% cdn2; 
    - cdn3; 
    } 

    server { 
    server_name example.com; 

    # Use the variable defined by the split_clients block to determine 
    # the rewritten hostname for requests beginning with /images/ 
    location /images/ { 
     rewrite^http://$cdn_host.example.com$request_uri? permanent; 
    } 
    } 
} 
+3

यह सवाल का सही समाधान है, लेकिन यह वास्तव में ऐसा करने का सबसे अच्छा तरीका नहीं है जिसे मैं वास्तव में चाहता हूं। विशेष रूप से, आप अपने वेब सर्वर से काम को ऑफ़लोड करने का प्रयास कर रहे हैं। यदि आपका एप्लिकेशन पहले आपके वेब सर्वर पर सीडीएन अनुरोध भेज रहा है, तो रीडायरेक्ट किया जा रहा है, तो आप वास्तव में सीडीएन में सब कुछ ऑफ़लोड नहीं कर रहे हैं। आदर्श रूप में आप चाहते हैं कि आपका आवेदन सीधे सीडीएन पर संपत्तियों के लिंक प्रस्तुत करे। यदि आप रेल का उपयोग करते हैं, तो आप अंतर्निहित "संपत्ति होस्ट" सुविधा का उपयोग कर सकते हैं। अन्य ढांचे में समान विशेषताएं हैं या आप DIY कर सकते हैं :) – genexp

0

यह निश्चित रूप से संभव है। Nginx लोड संतुलन के साथ आता है:

upstream mysite { 
    server www1.mysite.com; 
    server www2.mysite.com; 
} 

यह भार संतुलन के लिए 2 सर्वर परिभाषित करता है। डिफ़ॉल्ट अनुरोधों द्वारा सभी परिभाषित सर्वरों पर समान रूप से वितरित किया जाएगा। हालांकि आप सर्वर प्रविष्टियों में वजन जोड़ सकते हैं।

अपने सर्वर {} विन्यास के अंदर आप अब लोड संतुलन के लिए आने वाले अनुरोधों को पारित करने के लिए निम्नलिखित में जोड़ सकते हैं (उदाहरण के लिए छवियों निर्देशिका के लिए सभी अनुरोधों को संतुलित लोड करने के लिए):

location /images/ { 
     proxy_pass http://mysite; 
} 

documentation पर एक नज़र डालें अधिक विस्तृत विवरण के लिए।

+0

मैं इस समाधान की कोशिश की है, लेकिन अपने सर्वर –

+5

यह सही समाधान नहीं है पर स्थित नदी के ऊपर नहीं है। सीडीएन का बिंदु वास्तव में वेबसर्वर से काम को ऑफ़लोड करना है। यह वास्तव में उन्हें रीडायरेक्ट करने के बजाय सीडीएन के सभी अनुरोधों को प्रॉक्सी करेगा, जो आमतौर पर सीडीएन बेकार प्रदान करता है। – genexp