1. Einfache Konfiguration der dynamischen und statischen Trennung von Nginx Angenommen, web1 ist ein statischer Server, web2 ist ein dynamischer Server und node2 ist ein Proxy 1.1 Nach Verzeichnis trennen web1 verarbeitet nur statische Anfragen [root@web1 ~]# mkdir -p /var/www/www/image [root@web1 ~]# yum -y installiere lrzsz [root@web1 ~]# cd /var/www/www/image/ [root@web1 Bild]# rz [root@web1 Bild]# ll -rw-r--r--. 1 root root 156848 13. März 11:31 nhrzyx.png [root@web2 ~]# vim /etc/httpd/conf/httpd.conf Dokumentstammverzeichnis "/var/www/www" [root@web2 ~]# systemctl restart httpd Web2 verarbeitet nur dynamische Anfragen [root@web2 ~]# mkdir -p /var/www/www/dynamic [root@web2 ~]# echo dynamic10 > /var/www/www/dynamic/index.html [root@web2 ~]# vim /etc/httpd/conf/httpd.conf Dokumentstammverzeichnis "/var/www/www" [root@web2 ~]# systemctl restart httpd Zugangstest http://172.25.254.134/image/nhrzyx.png http://172.25.254.135/dynamic/index.html 1.2 Trennung auf Verlangen Konfigurieren des Proxys [root@lb01 conf]# vim nginx.conf Arbeiterprozesse 1; Ereignisse { Arbeiterverbindungen 1024; } http { mime.types einschließen; Standardtyp Anwendung/Oktett-Stream; sendfile an; KeepAlive-Timeout 65; Upstream-Stackpools { Server 172.25.254.134:80 Gewicht=5; } Upstream dynamische_Pools { Server 172.25.254.135:80 Gewicht=5; } Server { hören Sie 80; Servername www.lbtest.com; Standort / { Stamm-HTML; Index Index.html Index.htm; Proxy_Set_Header Host $host; Proxy-Passwort http://dynamische_Pools; } Standort /Bild/ { Proxy_Set_Header Host $host; Proxy-Passwort http://stack_pools; } Standort /dynamisch/ { Proxy_Set_Header Host $host; Proxy-Passwort http://dynamische_Pools; } } } [root@lb01 conf]# nginx -s neu laden Konfigurieren Sie Hosts und testen Sie den Browserzugriff 172.25.254.131 www.lbtest.com http://www.lbtest.com/image/nhrzyx.png http://www.lbtest.com/dynamic/ 1.3 Trennung durch Erweiterung [root@lb01 conf]# vim nginx.conf Arbeiterprozesse 1; Ereignisse { Arbeiterverbindungen 1024; } http { mime.types einschließen; Standardtyp Anwendung/Oktett-Stream; sendfile an; KeepAlive-Timeout 65; Upstream-Stackpools { Server 172.25.254.134:80 Gewicht=5; } Upstream dynamische_Pools { Server 172.25.254.135:80 Gewicht=5; } Server { hören Sie 80; Servername www.lbtest.com; Standort / { Stamm-HTML; Index Index.html Index.htm; Proxy_Set_Header Host $host; Proxy-Passwort http://dynamische_Pools; } Standort ~ .*.(jpg|png|gif|css|js|swf|bmp|jsp|php|asp)$ { Proxy_Set_Header Host $host; Proxy-Passwort http://stack_pools; } } } [root@lb01 conf]# nginx -s neu laden http://www.lbtest.com/image/nhrzyx.png 1.4 Trennung aufgrund der Kundenidentifikation http { mime.types einschließen; Standardtyp Anwendung/Oktett-Stream; sendfile an; KeepAlive-Timeout 65; Upstream-Stackpools { Server 172.25.254.134:80 Gewicht=5; } Upstream dynamische_Pools { Server 172.25.254.135:80 Gewicht=5; } Server { hören Sie 80; Servername www.lbtest.com; Standort / { wenn ($http_user_agent ~* "MSIE") { Proxy-Passwort http://dynamische_Pools; } wenn ($http_user_agent ~* "Firefox") { Proxy-Passwort http://stack_pools; } } Proxy_Set_Header Host $host; } } [root@web1 Bild]# echo stack_web>> /var/www/www/test.html [root@web1-Bild]# systemctl restart httpd [root@web2 ~]# echo dynamic_web>>/var/www/www/test.html [root@web2 ~]# systemctl restart httpd Verwenden Sie die Browser IE und Firefox für den Zugriff http://www.lbtest.com/test.html 1.5 Trennung von Client-PC und Mobilgerät nutzen http { mime.types einschließen; Standardtyp Anwendung/Oktett-Stream; sendfile an; KeepAlive-Timeout 65; Upstream-Stackpools { Server 172.25.254.134:80 Gewicht=5; } Upstream dynamische_Pools { Server 172.25.254.135:80 Gewicht=5; } Server { hören Sie 80; Servername www.lbtest.com; Standort / { wenn ($http_user_agent ~* "iphone") { Proxy-Passwort http://dynamische_Pools; } wenn ($http_user_agent ~* "android") { Proxy-Passwort http://stack_pools; } } Proxy_Set_Header Host $host; } } Greifen Sie per Android und iPhone auf den Test zu http://www.lbtest.com/test.html 2. Optimierung net.ipv4.tcp_fin_timeout = 2 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_keepalive_time = 600 net.ipv4.ip_local_port_range = 4000 65000 net.ipv4.tcp_max_syn_backlog = 16348 net.ipv4.tcp_max_tw_buckets = 36000 net.ipv4.tcp_syn_retries = 1 net.ipv4.tcp_synack_retries = 1 net.ipv4.tcp_max_orphans = 16384 net.core.somaxconn = 16384 net.core.netdev_max_backlog = 18364 Eine kurze Einführung in Keepalive und Nginx Konfigurieren Sie Keepalived, um eine hohe Verfügbarkeit des Nginx-Lastausgleichs zu erreichen Keepalive eignet sich besser zum Erkennen von IP-Drift. Wenn der Ressourcendienst gesteuert wird, ist Heartbeat besser geeignet, z. B. bei hoher Verfügbarkeit in Speicherrichtung. 3. Integritätsprüfung des Nginx-Reverse-Proxys Wenn nginx als Reverse-Proxy fungiert und der Backend-Server ausfällt, kann ngixn diesen Realserver nicht aus dem Upstream entfernen und leitet die Anfrage daher an den Backend-Realserver weiter. Obwohl nginx proxy_next_upstream in localtion aktivieren kann, um die an den Kunden zurückgegebene Fehlerseite zu beheben, leitet dies die Anfrage dennoch an diesen Server weiter und dann an andere Server, wodurch eine Weiterleitung verschwendet wird. Mithilfe des vom Taobao-Team entwickelten nginx-Moduls nginx_upstream_check_module, das den Gesundheitszustand des Backend-Realservers erkennt, werden alle Anfragen nicht an diesen Server weitergeleitet, wenn der Backend-Server nicht verfügbar ist Prüfintervall = 5000 Anstieg = 1 Abfall = 3 Timeout = 4000; 3.1 Direkt zur Konfigurationsdatei hinzufügen Arbeiterprozesse 1; Ereignisse { Arbeiterverbindungen 1024; } http { mime.types einschließen; Standardtyp Anwendung/Oktett-Stream; sendfile an; KeepAlive-Timeout 65; Upstream-Webpools { Server 172.25.254.134:80 Gewicht=5; Server 172.25.254.135:80 Gewicht=5; # Server 172.25.254.158:80 Gewicht=5 Backup; Prüfintervall = 5000 Anstieg = 1 Abfall = 3 Timeout = 4000; } Server { hören Sie 80; Servername www.lbtest.com; Standort / { #Wurzel-HTML; # index.html index.htm; Proxy_Set_Header Host $host; Proxy-Passwort http://Webpools; } } } nginx: [emerg] unbekannte Anweisung „check“ in /usr/local/nginx/conf/nginx.conf:14 nginx: Test der Konfigurationsdatei /usr/local/nginx/conf/nginx.conf fehlgeschlagen Fehler überprüfen Laden Sie das Nginx-Modul https://github.com/yaoweibin/nginx_upstream_check_module herunter, verwenden Sie Nginx, um das Modul zu installieren, und behandeln Sie es als Nginx-Upgrade. 3.2 Download-Modul [root@node2 nginx-1.12.2]# yum -y installiere git [root@node2 nginx-1.12.2]# git clone https://github.com/yaoweibin/nginx_upstream_check_module.git [root@node2 nginx-1.12.2]# ll drwxr-xr-x. 7 root root 4096 13. April 00:57 nginx_upstream_check_module [root@node2 nginx-1.12.2]# cd nginx_upstream_check_module/ [root@node2 nginx_upstream_check_module]# ll -rw-r--r--. 1 root root 0 Apr 13 00:57 ÄNDERUNGEN -rw-r--r--. 1 root root 7921 Apr 13 00:57 check_1.11.1+.patch -rw-r--r--. 1 root root 8330 13. April 00:57 check_1.11.5+.patch -rw-r--r--. 1 root root 8060 13. April 00:57 check_1.12.1+.patch -rw-r--r--. 1 root root 8054 13. April 00:57 check_1.14.0+.patch -rw-r--r--. 1 root root 5483 13. April 00:57 check_1.2.1.patch -rw-r--r--. 1 root root 7130 Apr 13 00:57 check_1.2.2+.patch -rw-r--r--. 1 root root 7094 13. April 00:57 check_1.2.6+.patch -rw-r--r--. 1 root root 6791 13. April 00:57 check_1.5.12+.patch -rw-r--r--. 1 root root 8295 13. April 00:57 check_1.7.2+.patch -rw-r--r--. 1 root root 8346 13. April 00:57 check_1.7.5+.patch -rw-r--r--. 1 root root 8509 13. April 00:57 check_1.9.2+.patch -rw-r--r--. 1 root root 6943 13. April 00:57 check.patch -rw-r--r--. 1 root root 749 Apr 13 00:57 konfiguration drwxr-xr-x. 2 root root 43 Apr 13 00:57 doc -rw-r--r--. 1 root root 1709 Apr 13 00:57 nginx-sticky-module.patch drwxr-xr-x. 2 root root 29 Apr 13 00:57 nginx-tests -rw-r--r--. 1 root root 112010 Apr 13 00:57 ngx_http_upstream_check_module.c -rw-r--r--. 1 root root 529 13. April 00:57 ngx_http_upstream_check_module.h -rw-r--r--. 1 root root 2848 13. April 00:57 ngx_http_upstream_jvm_route_module.patch -rw-r--r--. 1 root root 11509 Apr 13 00:57 README drwxr-xr-x. 6 root root 79 Apr 13 00:57 test -rw-r--r--. 1 root root 3342 Apr 13 00:57 upstream_fair.patch drwxr-xr-x. 2 root root 81 Apr 13 00:57 util 3.3 Patchen [root@node2 nginx_upstream_check_module]# cd ../ [root@node2 nginx-1.12.2]# yum -y Patch installieren Hinweis: Aufgrund der Aktualisierung der Nginx-Version lautet der Patch für Nginx-Version 1.12 und höher check_1.11.5+.patch [root@node2 nginx-1.12.2]# patch -p0 < ./nginx_upstream_check_module/check_1.11.5+.patch Patchdatei src/http/modules/ngx_http_upstream_hash_module.c Patchdatei src/http/modules/ngx_http_upstream_ip_hash_module.c Patchdatei src/http/modules/ngx_http_upstream_least_conn_module.c Patchdatei src/http/ngx_http_upstream_round_robin.c Patchdatei src/http/ngx_http_upstream_round_robin.h 3.4 Kompilieren und installieren [root@node2 nginx-1.12.2]# ./configure --prefix=/usr/local/nginx \ > --Benutzer=nginx --Gruppe=nginx \ > --mit-http_ssl_module \ > --mit-http_realip_module \ > --mit-http_addition_module \ > --mit-http_gzip_static_module \ > --mit-http_stub_status_module \ > --mit-http_sub_module \ > --mit-pcre \ > --add-module=./nginx_upstream_check_module Ein neues Verzeichnis mit dem Namen „objs“ wird angezeigt. drwxr-xr-x. 4 root root 187 Apr 13 01:04 objs sed -e "s|%%PREFIX%%|/usr/local/nginx|" \ -e "s|%%PID_PATH%%|/usr/local/nginx/logs/nginx.pid|" \ -e "s|%%CONF_PATH%%|/usr/local/nginx/conf/nginx.conf|" \ -e "s|%%ERROR_LOG_PATH%%|/usr/local/nginx/logs/error.log|" \ < man/nginx.8 > objs/nginx.8 make[1]: Verlasse das Verzeichnis `/usr/local/src/nginx-1.12.2' drwxr-xr-x. 3 root root 41 Apr 13 01:04 addon -rw-r--r--. 1 root root 16895 Apr 13 01:04 autoconf.err -rw-r--r--. 1 root root 42396 13. April 01:04 Makefile -rwxr-xr-x. 1 root root 5993600 13. April 01:06 nginx #nginx neue ausführbare Datei -rw-r--r--. 1 root root 5341 13. April 01:06 nginx.8 -rw-r--r--. 1 root root 7202 13. April 01:04 ngx_auto_config.h -rw-r--r--. 1 root root 657 13. April 01:03 ngx_auto_headers.h -rw-r--r--. 1 root root 6412 13. April 01:04 ngx_modules.c -rw-r--r--. 1 root root 87120 13. April 01:06 ngx_modules.o drwxr-xr-x. 9 root root 91 3. April 22:38 src Sichern Sie nginx und kopieren Sie das neue nginx [root@node2 nginx-1.12.2]# cd /usr/local/nginx/sbin/ [root@node2 sbin]# mv nginx nginx.bak [root@node2 sbin]# cp /usr/local/src/nginx-1.12.2/objs/nginx /usr/local/nginx/sbin [root@node2 sbin]# /usr/local/nginx/sbin/nginx -s stoppen
[root@node2 sbin]# ID nginx
[root@node2 sbin]# Benutzeradd nginx [root@node2 sbin]# ID nginx
[root@node2 sbin]# /usr/local/nginx/sbin/nginx -s stoppen [root@node2 sbin]# /usr/local/nginx/sbin/nginx [root@node2 ~]# nginx -t
Erfolgreiche Installation 3.5 Konfiguration Arbeiterprozesse 1; Ereignisse { Arbeiterverbindungen 1024; } http { mime.types einschließen; Standardtyp Anwendung/Oktett-Stream; sendfile an; KeepAlive-Timeout 65; Upstream-Webpools { Server 172.25.254.134:80 Gewicht=5; Server 172.25.254.135:80 Gewicht=5; # Server 172.25.254.158:80 Gewicht=5 Backup; Prüfintervall = 5000 Anstieg = 1 Abfall = 3 Timeout = 4000; } Server { hören Sie 80; Servername www.lbtest.com; Standort / { Proxy_Set_Header Host $host; Proxy-Passwort http://Webpools; } Standort /nstatus{ Status prüfen; Zugriff_Abmeldung; } } } [root@node2 conf]# nginx -s neu laden 3.6 Zugangstest Beide Zustände sind normal Schalten Sie einen aus [root@web1-Bild]# systemctl stop httpd Schalten Sie beide [root@web2 ~]# systemctl stop httpd Öffnen Sie ein [root@web1 image]# systemctl start httpd [root@web2 ~]# systemctl restart httpd Backend-Check-Funktion erfolgreich implementiert Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: Eine kurze Einführung in den MySQL-Dialekt
>>: Schritt-für-Schritt-Anleitung zum Erstellen einer Kalenderkomponente mit React
Wenn ich das Formular eingabeunfähig machen möchte...
Einführung react-i18next ist ein leistungsstarkes...
Vorwort Dieser Artikel fasst hauptsächlich einige...
Inhaltsverzeichnis Variable Verwenden Sie aussage...
<html> <Kopf> <meta http-equiv=&quo...
Inhaltsverzeichnis Wesentlicher Unterschied Daten...
Der Server meldet einen Fehler 502 beim Synchroni...
Kürzlich habe ich die Funktion zum Umbenennen ges...
1. Gesamtarchitekturdiagramm Im Vergleich zu ande...
Ein Wort vorab: Plötzlich erhielt ich die Aufgabe...
Bevor wir über OO, Entwurfsmuster und die vielen o...
Bei einem unserer Webprojekte ist aufgrund der Zu...
Was ich kürzlich gelernt habe, beinhaltet Kenntni...
lass Utils = { /** * Ist es das Todesjahr? * @ret...
Inhaltsverzeichnis Der Unterschied zwischen Hash ...