2016-01-03 5 views
6

मेरे पास Nginx एक सीडीएन + लोड बैलेंसर सेटअप के पीछे सर्वर पूल है। सीडीएन कैश HTTP "पढ़ा" अनुरोध (प्राप्त करें, सिर, विकल्प) और "लिखने" अनुरोध (POST) को छोड़ देता है।Nginx दर सीमा और वास्तविक आईपी मॉड्यूल

मैं real_ip मॉड्यूल का उपयोग कर रहा है इस तरह के एक विन्यास में एक्स-आगे-के लिए हैडर से ग्राहकों के आईपी प्राप्त करने के लिए:

set_real_ip_from <trusted_cidr1> 
set_real_ip_from <trusted_cidr2> 
... 
real_ip_recursive on; 
real_ip_header X-Forwarded-For; 

यह यह काम करता है इस बात की पुष्टि कर सकते हैं। लेकिन, मैं भी ग्राहक प्रति अनुरोध दर (मैं मान लेंगे कि हर आईपी एक विशिष्ट ग्राहक है), रोबोट और हमलों से बचने के सीमित करना चाहते हैं, तो इस प्रकार मैं limit_req मॉड्यूल का उपयोग कर रहा:

http { 

    limit_req_zone $binary_remote_addr zone=perip:10m rate=10r/s; 

    location/{ 
    limit_req zone=perip burst=5; 
    } 

} 

तो, मेरा सवाल है: $ binary_remote_addr मूल क्लाइंट के आईपी, अनुरोध के वास्तविक उत्प्रेरक को मानते हैं, एक बार जब मैंने real_ip कॉन्फ़िगर किया है, या आंतरिक रूप से Nginx इसे अपेक्षाकृत ओवरराइड नहीं करता है जैसा कि मैं उम्मीद कर रहा हूं? क्योंकि अगर ऐसा नहीं होता है, तो इस तरह की एक विन्यास निश्चित रूप से मुझे गंभीर समस्याएं पैदा करेगी।

मुझे लगता है कि Nginx इसके लिए पर्याप्त स्मार्ट है, लेकिन एक बार जब मुझे दस्तावेज़ीकरण पर इसके बारे में कोई पुष्टि नहीं मिली और मुझे अब तक वास्तविक और वितरित परिदृश्य में इसका परीक्षण करने का मौका नहीं मिला, तो मुझे उम्मीद है कि पिछले किसी के साथ ऐसा करने का अनुभव मुझे बता सकता है।

धन्यवाद।

उत्तर

16

अब तक कोई जवाब नहीं है, इसलिए मैं इसे कर रहा हूं।

मैं इसे अपने आप सत्यापित - real_ip मॉड्यूल कनेक्शन मूल के मूल्य में परिवर्तन आंतरिक रूप से, और सभी इरादों और उद्देश्यों के लिए, कनेक्शन का स्रोत से संबंधित सब कुछ हो जाता है कि आईपी (से मिला एक्स-फॉरवर्ड-के लिए , एक्स-रीयल-आईपी, आदि), $ binary_remote_addr चर सहित। इसलिए, अनुरोध सीमा विन्यास के साथ इसका उपयोग सुरक्षित है।

ओब्स: दूसरी ओर, यह $ realip_remote_addr पर कनेक्शन मूल आईपी बचाता है।

संबंधित मुद्दे