Rumah > Artikel > Operasi dan penyelenggaraan > Apakah cara Nginx melaksanakan kegigihan sesi?
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;}
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
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模块,添加成功
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/
Atas ialah kandungan terperinci Apakah cara Nginx melaksanakan kegigihan sesi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!