Nginx प्रॉक्सी के साथ चिपचिपा सत्र


10

मेरे पास एक एप्लिकेशन है जो दो अलग-अलग एडब्ल्यूएस उदाहरणों पर चल रहा है और मैं आईपी पर आधारित "चिपचिपा" या "लगातार" सत्र सक्षम करना चाहता हूं ताकि मैं एक विशेष तरीके से वेब सॉकेट प्रौद्योगिकियों का लाभ उठा सकूं।

मेरे पास दो अलग-अलग सेटअप हैं जो दोनों ip_hashइन चिपचिपे सत्रों को सक्षम करने के लिए उपयोग करते हैं ।

पहले सेटअप में, एप्लिकेशन प्रक्रिया उसी उदाहरण पर चल रही है जैसे कि नगनेक्स कॉन्फिग। यह काम कर रहा है , सत्र उम्मीद के मुताबिक कायम हैं।

upstream my_app {
    ip_hash;
    # local servers
    server 127.0.0.1:3001 weight=100 max_fails=5 fail_timeout=300;
    server 127.0.0.1:3002 weight=100 max_fails=5 fail_timeout=300;
    keepalive 8;
}

दूसरे सेटअप में, मैं बाहरी उदाहरणों की ओर इशारा कर रहा हूं और उसी प्रभाव को प्राप्त करने की कोशिश कर रहा हूं। यह सेट अप काम नहीं कर रहा है । दूसरे शब्दों में, सत्र अभी भी संतुलित लोड किए जा रहे हैं।

upstream my_app {
    ip_hash;
    # external servers
    server 111.11.11.11:3001 weight=100 max_fails=5 fail_timeout=300;
    server 222.22.22.22:3002 weight=100 max_fails=5 fail_timeout=300;
    keepalive 8;
}

क्या मैं ip_hashसही तरीके से उपयोग कर रहा हूं ? मैं बाहरी सर्वर के लिए "चिपचिपा" आईपी-आधारित सत्रों को कैसे सक्षम कर सकता हूं?


क्या आपके Nginx में "ngx_http_upstream_module" स्थापित है? मुझे नहीं पता कि यह डिफ़ॉल्ट रूप से शामिल है या नहीं। "nginx -V" आमतौर पर इसके साथ निर्मित मॉड्यूल को आउटपुट करता है। मेरा (स्रोत से निर्मित) इसका उल्लेख नहीं करता है
टिम

जवाबों:


7

मेरा सर्वर AWS लोड बैलेंसिंग के पीछे था, इसलिए मुझे ऊपर की ओर सही हेडर पास करने की आवश्यकता थी, ताकि यह हमेशा क्लाइंट आईपी को प्रतिबिंबित करे। निम्नलिखित कॉन्फ़िगरेशन ने मेरी समस्या तय की (टिप्पणी लाइन देखें):

upstream my_app {
    ip_hash;
    server 111.11.11.11:3001 weight=100 max_fails=5 fail_timeout=300;
    server 222.22.22.22:3002 weight=100 max_fails=5 fail_timeout=300;
    keepalive 8;
}

server {
    server_name my-app.com;

    location / {
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_set_header X-Real_IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;

        # This is necessary to pass the correct IP to be hashed
        real_ip_header X-Real-IP;

        proxy_pass http://my_app/;
        proxy_redirect off;
    }
}

7

Nginx प्रलेखन के अनुसार स्टिकी सत्र का समर्थन केवल उनके महंगे प्लस संस्करण के लिए उपलब्ध है। मैं विकल्पों पर शोध कर रहा हूं और जितना करीब मैं गया हूं, यह पुराना कांटा है जो कि नगनेक्स 1.5+ https://github.com/lusis/nginx-sticky-module के साथ संगत नहीं है

मैंने एक LUA मॉड्यूल बनाने की भी कोशिश की है लेकिन सहकर्मी के चयन के लिए कोई API हुक नहीं हैं, बस ज्ञान और अवरोधन के लिए।

नग्नेक्स प्लस लोड बैलेंसिंग

अपडेट करें

मुझे एक और बढ़िया मॉड्यूल मिला है, https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng/src देखें


क्या आप इस दस्तावेज़ से लिंक करने में सक्षम हैं?
जेम्स शेवी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.