एक्स-फॉरवर्डेड-हेडर के साथ नगीनक्स रेट सीमित


23

मैं nginx के HttpLimitReqModule का उपयोग करके दर-सीमित देख रहा हूं । हालाँकि, अनुरोध सभी एक ही आईपी (एक लोडबॉलर) से आ रहे हैं, हेडर में वास्तविक आईपी पते के साथ।

वहाँ X-Forwarded-Forस्रोत के आईपी के बजाय हेडर में आईपी के आधार पर nginx दर-सीमा के लिए एक रास्ता है ?

जवाबों:


28

हां, विशिष्ट दर-सीमित कॉन्फ़िगरेशन परिभाषा स्ट्रिंग जैसा दिखता है:

 limit_req_zone  $binary_remote_addr zone=zone:16m rate=1r/s;

जहां $binary_remote_addrसीमक के लिए अद्वितीय कुंजी है। आपको इसे $http_x_forwarded_forवैरिएबल में बदलने की कोशिश करनी चाहिए, जिसमें X-Forwarded-Forहेडर का मूल्य मिलता है । यद्यपि यह मेमोरी खपत में वृद्धि करेगा क्योंकि $binary_remote_addrआईपी ​​पते को संग्रहीत करने के लिए संकुचित बाइनरी प्रारूप का उपयोग कर रहा है और $http_x_forwarded_forनहीं है।

 limit_req_zone  $http_x_forwarded_for zone=zone:16m rate=1r/s;

मैं बस एक ही निष्कर्ष पर आया था, और एक त्वरित परीक्षण में यह ठीक काम करता है। बढ़ी हुई मेमोरी उपयोग को इंगित करने के लिए धन्यवाद।
जॉन ब्रॉडी

2
इससे गंभीर सुरक्षा संबंधी चिंताएं हो सकती हैं: blog.ircmaxell.com/2012/11/anatomy-of-attack-how-i-hacked.html
ircmaxell

ध्यान दें कि सिम्फनी के
calumbrodie

5
यदि आप रियलिप मॉड्यूल का उपयोग करते हैं, तो $binary_remote_addrचर सही तरीके से सेट हो जाता है।
सेनक अल्टी

5

limit_req_zoneनिर्देश चर अनुरोध समूह के लिए कुंजी के रूप में प्रयोग की जाने वाली परिभाषित करता है।
आमतौर पर, इसके $binary_remote_addrबजाय प्रयोग किया जाता है $remote_addrक्योंकि यह छोटा है और अंतरिक्ष बचाता है।

हो सकता है कि आप वैकल्पिक रूप से RealipModule का उपयोग करना चाहते हों ।
यह कस्टम हेडर में दिए गए पते पर रिमोट एड्रेस वेरिएबल्स को फिर से लिखेगा और लॉगिंग और अन्य वेरिएबल उपयोग को भी आसान बना देगा।


1
RealIP मॉड्यूल के लिए +1। इस मॉड्यूल का उपयोग करते समय, $binary_remote_addrऔर $remote_addrआपके कॉन्फ़िगर किए गए हेडर के मूल्य पर सेट किया जाता है, आमतौर पर X-Forwarded-For- इसलिए आपके मानक चर अब "वास्तविक ग्राहक आईपी पता" हैं। nginx -VNGINX के साथ बनाया गया था या नहीं यह देखने के लिए चलाएँ --with-http_realip। फिर कॉन्फ़िगरेशन उतना ही सरल है:, set_real_ip_from 10.0.0.0/8; real_ip_header X-Forwarded-For; जहां CIDR रेंज आपके अपस्ट्रीम लोड बैलेंसर की है जो X-Forwarder-Forहेडर सेट कर रहा है ।
मार्क
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.