Heim >Betrieb und Instandhaltung >Nginx >Auf welche Weise implementiert Nginx die Sitzungspersistenz?

Auf welche Weise implementiert Nginx die Sitzungspersistenz?

王林
王林nach vorne
2023-05-29 23:15:495399Durchsuche

1. Sitzungspersistenz basierend auf ip_hash

Beim Nginx-Lastausgleich können Sie ip_hash im Upstream festlegen. Jede Anfrage wird entsprechend dem Hash-Ergebnis der aufgerufenen IP zugewiesen und einem festen Wert zugeordnet Wenn der Back-End-Server ausfällt, geht die Sitzung verloren. Bei einer erneuten Anfrage wird wieder auf einen anderen normalen Server zugegriffen und die Sitzung bleibt bestehen. Ein Problem besteht darin, dass es zu einem Lastungleichgewicht kommen kann, da derselbe IP-Client auf einen festen Backend-Server zugreift. Das Folgende ist das Sitzungspersistenzformat von ip_hash.

Dies setzt voraus, dass die Backend-Server normal laufen.

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

Auf welche Weise implementiert Nginx die Sitzungspersistenz?

Wenn Sie nicht wissen, warum dieses Ergebnis vorliegt wird zurückgegeben. Wenn Sie neugierig sind, können Sie sich die spezifische Konfiguration und den Betrieb in meinem Blog zur Implementierung des Nginx-Lastausgleichs ansehen. Daher ist es nicht schwer zu erkennen, dass bei Verwendung von ip_hash eine Sitzungspersistenz erreicht wird, das heißt, der Client hat festen Zugriff auf den Back-End-Server 112 (es sei denn, dieser Server ist ausgefallen) und er kehrt nicht zu einem anderen zurück Back-End-Server, auch wenn die Seite erneut aktualisiert wird (Hinweis: In der tatsächlichen Produktion ist der vom Backend-Server an den anfordernden Client zurückgegebene Inhalt derselbe, dies dient nur zu Testzwecken).

Angenommen, der Server mit festem Zugriff ist ausgefallen

Auf welche Weise implementiert Nginx die Sitzungspersistenz?

2. Cookie-basierte Sitzungsaufbewahrung# 🎜 🎜#

Diese Methode dient dazu, die Sitzung des Benutzers im Cookie zu speichern. Wenn der Benutzer einem anderen Server zugewiesen wird, ermitteln Sie zunächst, ob die Sitzung des Benutzers auf dem Server vorhanden ist. Dieser Server implementiert Sitzungspersistenz. Beim Speichern von Cookies bestehen Sicherheitsrisiken. Hacker können Cookies stehlen und damit verbundene Informationen erhalten. Um auf diese Weise Sitzungspersistenz zu erreichen, müssen Sie das Modul sticky_cookie_insert hinzufügen. Der Unterschied zu ip_hash besteht darin, dass der Client nicht anhand der IP, sondern anhand von Cookies beurteilt wird.

Sticky-Modul hinzufügen (Nginx habe ich mit yum installiert)

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模块,添加成功

Auf welche Weise implementiert Nginx die Sitzungspersistenz?

Im Proxyserver konfigurieren (Lastausgleichsserver) # 🎜🎜#
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   --重新加载配置文件

Besuchen Sie http://10.20.151.240/

Das obige ist der detaillierte Inhalt vonAuf welche Weise implementiert Nginx die Sitzungspersistenz?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen