Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Apakah cara Nginx melaksanakan kegigihan sesi?

Apakah cara Nginx melaksanakan kegigihan sesi?

王林
王林ke hadapan
2023-05-29 23:15:495373semak imbas

1. Kegigihan sesi berdasarkan ip_hash

Apabila melakukan pengimbangan beban Nginx, anda boleh menetapkan ip_hash di huluan Setiap permintaan diperuntukkan mengikut hasil cincangan IP yang diakses dan dipetakan ke pelayan tetap. apabila pelayan bahagian belakang turun, sesi akan hilang Apabila permintaan dibuat semula, pelayan biasa lain akan dibetulkan semula dan sesi akan dikekalkan. Satu masalah ialah memandangkan klien IP yang sama mengakses pelayan bahagian belakang tetap, ia mungkin menyebabkan ketidakseimbangan beban. Berikut ialah format kegigihan sesi ip_hash.

Ini mengandaikan bahawa pelayan bahagian belakang semuanya berjalan seperti biasa

在Nginx代理服务器(负载均衡服务器)中配置:===========================================upstream test {   ip_hash;      server 10.20.151.112:80;      server 10.20.151.113:80;}

Apakah cara Nginx melaksanakan kegigihan sesi?

Jika anda ingin tahu mengapa keputusan ini dikembalikan, anda boleh pergi ke my Nginx load Semak konfigurasi dan operasi terperinci dalam blog pelaksanaan seimbang. Oleh itu, tidak sukar untuk melihat bahawa apabila saya menggunakan ip_hash, ketekunan sesi dicapai, iaitu, pelanggan akan mempunyai akses tetap ke pelayan bahagian belakang 112 (melainkan pelayan ini tidak berfungsi), dan ia tidak akan kembali ke pelayan lain. pelayan bahagian belakang walaupun halaman dimuat semula kandungannya (nota: dalam pengeluaran sebenar, kandungan yang dikembalikan oleh pelayan bahagian belakang kepada pelanggan yang meminta adalah sama, ini hanya untuk kesan ujian).

Anggapkan pelayan dengan akses tetap tidak berfungsi

Apakah cara Nginx melaksanakan kegigihan sesi?

2. Pengekalan sesi berasaskan kuki

Kaedah ini untuk menyimpan sesi pengguna dalam kuki Apabila pengguna ditugaskan ke pelayan yang berbeza, mula-mula tentukan sama ada sesi pengguna wujud pada pelayan Jika tidak, simpan dahulu sesi dalam kuki ke dalam pelayan untuk mengekalkan sesi. Terdapat risiko keselamatan dalam menyimpan kuki Penggodam mungkin mencuri kuki dan mendapatkan maklumat berkaitan. Untuk mencapai kegigihan sesi dengan cara ini, anda perlu menambah modul sticky_cookie_insert Perbezaan daripada ip_hash ialah ia tidak menilai klien berdasarkan IP, tetapi berdasarkan kuki.

Tambah modul melekat (Nginx saya pasang menggunakan yum)

yum install -y pcre* openssl* gcc gcc-c++ make   --安装编译环境
wget  https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng/get/08a395c66e42.zip   --下载sticky模块
nginx -v  --查看Nginx版本,因为要下载和yum安装nginx对应版本的源码包
wget  http://nginx.org/download/nginx-1.18.0.tar.gz
yum install -y unzip   --安装解压工具
unzip 08a395c66e42.zip --解压模块包
mv nginx-goodies-nginx-sticky-module-ng-08a395c66e42/ nginx-sticky-module-ng/  --改名
tar xzvf nginx-1.18.0.tar.gz -C /usr/local/  --解压nginx的源码包
cd /usr/local/nginx-1.18.0/
nginx -V   --查看yum安装nginx所有模块
======================================================================================
./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie' --add-module=/root/nginx-sticky-module-ng
======================================================================================
make && make install
Nginx -V  --再次查看Nginx模块,添加成功

Apakah cara Nginx melaksanakan kegigihan sesi?

Konfigurasikan dalam pelayan proksi (pelayan pengimbangan beban)

vim upstream.conf   --在子配置文件conf.d中创建upstream.conf
=====================================================================================
upstream qfedu {
        server 192.168.198.143;
        server 192.168.198.145;
        sticky;
}
vim proxy.conf     ----在子配置文件conf.d中创建proxy.conf
=====================================================================================
server {
    listen       80;
    server_name  localhost;
    
    location / {
        proxy_pass http://testweb;
    }
}
nginx -t    --检查配置文件语法是否有错
nginx -s reload   --重新加载配置文件

Lawati http://10.20.151.240/

Apakah cara Nginx melaksanakan kegigihan sesi?

Atas ialah kandungan terperinci Apakah cara Nginx melaksanakan kegigihan sesi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam