Zweck:
Fügen Sie ein von einem Dritten geschriebenes Plug-in hinzu, am Beispiel des Nginx-Sticky-Moduls, im Folgenden als Sticky bezeichnet.
Anzeigen der installierten Nginx-Module über /usr/local/nginx/sbin/ nginx -V
(Empfohlenes Tutorial: nginx-Tutorial)
Sticky-Modul und Ip_hash beziehen sich beide auf Lastausgleichsalgorithmen, es gibt jedoch Unterschiede:
1 auf der IP des Clients
2, sticky, entsprechend dem Cookie, das der Server dem Client gegeben hat, bringt der Client dieses Cookie, wenn er erneut anfordert, und Nginx leitet die Anfrage mit diesem Cookie an den Server weiter, der das Cookie ausgegeben hat
Hinweis: In einem LAN gibt es 3. Jeder Computer hat drei interne IPs, aber wenn er eine Anfrage initiiert, hat er nur eine externe IP, die vom Telekommunikationsbetreiber dem Router zugewiesen wird, mit dem er sich verbindet, wenn die ip_hash-Methode verwendet wird Wenn der Upstream-Server das Sticky-Modul verwendet, weist Nginx die Anfrage dem Cookie-basierten Server zu, um ein Gleichgewicht der Intranet-NAT-Benutzer zu erreichen. Dies ist etwas, was iphash nicht kann.
Sticky-Arbeitsprinzip:
Sticky ist eine auf Cookies basierende Lastausgleichslösung. Durch die Verteilung und Identifizierung von Cookies gelangen Anfragen vom selben Client auf denselben Server 1. Der Client initiiert zum ersten Mal eine Zugriffsanforderung. Nachdem Nginx diese erhalten hat, stellt er fest, dass sich im Anforderungsheader kein Cookie befindet, und verteilt die Anforderung dann per Abfrage an den Back-End-Server.
2. Nachdem der Backend-Server die Anfrage verarbeitet hat, gibt er die Antwortdaten an nginx zurück.
3. Zu diesem Zeitpunkt generiert Nginx ein Cookie mit Route und gibt es an den Client zurück. Der Wert der Route entspricht dem Back-End-Server, bei dem es sich um Klartext oder Hash-Werte wie md5, sha1 usw. handeln kann.
4 Der Client empfängt die Anfrage und speichert das Cookie mit der Route.
5. Wenn der Client das nächste Mal eine Anfrage sendet, übermittelt er die Route und Nginx leitet sie basierend auf dem Routenwert im empfangenen Cookie an den entsprechenden Back-End-Server weiter.
Offizielle Website-Adresse von Sticky
Offizielle Adresse:
https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng/src
Download-Adresse:
wget https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng/get/master.tar.gz
Nginx-Installation des Sticky-Moduls
#1.下载的文件上传,解压 tar -xvzf nginx-goodies-nginx-sticky-module-ng-08a395c66e42.tar #2.重命名为nginx-sticky-module mv nginx-goodies-nginx-sticky-module-ng-08a395c66e42 /usr/local/nginx-sticky-module #3.进入nginx源码目录进行编译 ./configure --prefix=/usr/local/nginx --add-module=/usr/local/nginx-sticky-module --with-http_stub_status_module --with-http_ssl_module #4.安装 1.停止nginx后进行安装:make && make install 2.在线更新安装: make upgrade
Die Installation ist abgeschlossen. Überprüfen Sie die Kompilierungsparameter über ./sbin/nginx -V. Sie können sehen, dass die Sticky-Modul wurde in Nginx kompiliert
[root@bogon nginx]# ./sbin/nginx -V nginx version: nginx/1.16.0 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) built with OpenSSL 1.0.2k-fips 26 Jan 2017 TLS SNI support enabled configure arguments: --prefix=/usr/local/nginx --add-module=/usr/local/nginx-sticky-module --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module
Nginx.conf ändern und Sticky-Funktion aktivieren
upstream zyi { #使用sticky,不设置expires则浏览器关闭时结束会话 sticky domain=zy.csxiuneng.com path=/; server localhost:9001; } server { listen 80; server_name zy.csxiuneng.com; access_log logs/zy.access.log main; location / { proxy_pass http://zyi; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; client_max_body_size 10m; client_body_buffer_size 256k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_buffer_size 4k; proxy_buffers 4 32k; }
sticky Syntax:
sticky [name=route] [domain=.foo.bar] [path=/] [expires=1h] [hash=index|md5|sha1] [no_fallback] [secure] [httponly]; [name=route] 设置用来记录会话的cookie名称 [domain=.foo.bar] 设置cookie作用的域名 [path=/] 设置cookie作用的URL路径,默认根目录 [expires=1h] 设置cookie的生存期,默认不设置,浏览器关闭即失效 [hash=index|md5|sha1] 设置cookie中服务器的标识是用明文还是使用md5值,默认使用md5 [no_fallback] 设置该项,当sticky的后端机器挂了以后,nginx返回502 (Bad Gateway or Proxy Error) ,而不转发到其他服务器,不建议设置 [secure] 设置启用安全的cookie,需要HTTPS支持 [httponly] 允许cookie不通过JS泄漏,没用过
Nginx neu starten: ./sbin/nginx -s reload
Besuchen Sie: zy.csxiuneng.com, Sie können Sehen Sie, dass es in den Cookies einen Eintrag gibt Das Cookie wird zunächst vom Server ausgegeben. Wenn der Client Cookies deaktiviert, werden die Cookies nicht wirksam.
3. Der Client bringt möglicherweise keine Cookies mit. Wenn der Android-Client eine Anfrage sendet, muss klar angegeben werden, welche Cookies mitgebracht werden. Wenn Sie Sticky für den Lastausgleich verwenden möchten, fügen Sie bitte Cookies zur Android-Entwicklung hinzu.4. Der Cookie-Name sollte nicht mit dem Namen des vom Unternehmen verwendeten Cookies übereinstimmen. Der Standard-Cookie-Name von Sticky ist „route“ und kann in einen beliebigen Wert geändert werden.
5 Die erste vom Client gesendete Anfrage enthält keine Cookies. Das vom Server ausgegebene Cookie wird erst bei der nächsten Anfrage des Clients wirksam.6.Nginx Sticky-Modul kann nicht gleichzeitig mit ip_hash verwendet werden
Wenn Sie mehrere Module von Drittanbietern hinzufügen möchten, verwenden Sie mehrere --add-module-Anweisungen:./configure --prefix=/usr/local/nginx --add-module=/usr/local/nginx-sticky-module/ --add-module=/usr/local/nginx-http-concat-1.2.2/
Das obige ist der detaillierte Inhalt vonNginx fügt Module von Drittanbietern hinzu. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!