Nginx proxy ile yapışkan oturumlar


10

İki farklı AWS örneğinde çalışan bir uygulamam var ve belirli bir şekilde web soketi teknolojilerinden yararlanabilmem için IP tabanlı "yapışkan" veya "kalıcı" oturumları etkinleştirmek istiyorum.

Her ikisi de ip_hashbu yapışkan oturumları etkinleştirmek için kullanmayı içeren iki farklı kurulum var .

İlk kurulumda, uygulama işlemleri Nginx yapılandırmasıyla aynı örnekte çalışıyor. Bu çalışıyor , oturumlar beklendiği gibi kalıcı.

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;
}

İkinci kurulumda, dış örneklere işaret ediyorum ve aynı etkiyi elde etmeye çalışıyorum. Bu kurulum çalışmıyor . Başka bir deyişle, oturumlar hala yük dengeleniyor.

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_hashDoğru mu kullanıyorum ? Harici sunucular için "yapışkan" ip tabanlı oturumları nasıl etkinleştirebilirim?


Nginx'inizde "ngx_http_upstream_module" kurulu mu? Varsayılan olarak dahil edilip edilmediğini bilmiyorum. "nginx -V" genellikle birlikte üretildiği modülleri çıkarır. Mine (kaynaktan inşa edilmiş) bundan bahsetmiyor
Tim

Yanıtlar:


7

Sunucum AWS yük dengelemesinin arkasındaydı, bu yüzden her zaman istemci IP'sini yansıtacak şekilde doğru başlıkları yukarı akışa geçirmem gerekiyordu. Aşağıdaki yapılandırma sorunumu düzeltti (yorum satırına bakın):

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 belgelerine göre Yapışkan oturum desteği yalnızca pahalı Plus sürümleri için mevcuttur. Alternatifleri araştırıyorum ve daha yakın olduğumda Nginx 1.5+ ile uyumlu olmayan bu eski çatal https://github.com/lusis/nginx-sticky-module

Ben de bir LUA modülü inşa etmeye çalıştım ama sadece numaralandırma ve engelleme için, akran seçimi için hiçbir API kanca vardır.

Nginx Plus Yük Dengeleme

Güncelleme

Başka bir harika modül buldum, bkz. Https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng/src


Bu belgelere bağlantı verebilir misiniz?
James Shewey
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.