Lassen Sie uns heute mit Ihnen über einige sehr nützliche Punkte von Nginx in unseren tatsächlichen Anwendungen sprechen.
Das frühe Geschäft basierte auf der Bereitstellung einzelner Knoten, da der Zugriffsverkehr in der Anfangsphase nicht groß war, konnte die einzelne Struktur jedoch auch die Nachfrage befriedigen, wenn das Unternehmen wächst, und schließlich Ein einzelner Server wird ebenfalls betroffen sein. Mit der Zeit kann die Leistung eines einzelnen Servers nicht mehr mit dem Geschäftswachstum mithalten, was zu häufigen Online-Ausfällen führt und schließlich dazu führt, dass das System lahmgelegt wird und Benutzeranfragen nicht mehr verarbeiten kann.
Aus der obigen Beschreibung ergeben sich zwei Hauptprobleme:
①Die Bereitstellungsmethode der Einzelstruktur kann den wachsenden Geschäftsverkehr nicht bewältigen.
②Wenn der Backend-Knoten ausfällt, wird das gesamte System lahmgelegt, wodurch das gesamte Projekt nicht verfügbar ist.
In diesem Zusammenhang also die Vorteile, die die Einführung der Lastausgleichstechnologie mit sich bringen kann:
„Hohe Verfügbarkeit des Systems:“ Wenn ein Knoten ausfällt, kann der Datenverkehr schnell auf andere Knoten übertragen werden.
「Hohe Leistung des Systems:」 Mehrere Server stellen gemeinsam Dienste für die Außenwelt bereit und sorgen so für einen höheren Durchsatz für das gesamte System.
「Systemskalierbarkeit:」 Wenn das Unternehmen wächst oder wieder einbricht, können Knoten für eine flexible Erweiterung hinzugefügt/reduziert werden.
OK~, da die Einführung der Lastausgleichstechnologie uns so große Vorteile bringen kann, welche Optionen gibt es zur Auswahl? Es gibt hauptsächlich zwei Lastlösungen: „Hardware-Ebene und Software-Ebene“ Die am häufigsten verwendeten Hardware-Lasten sind A10、F5等,但这些机器动辄大几万乃至几十万的成本,因此一般大型企业会采用该方案,如银行、国企、央企等。而成本有限,但依旧想做负载均衡的项目,那么可在软件层面实现,如典型的Nginx等,软件层的负载也是本文的重点,毕竟Boss Einer unserer Grundsätze lautet: „Wenn es durch Technologie realisiert werden kann, versuchen Sie, kein Geld auszugeben.“
Ein Online-Tool zur Beantwortung von Fragen für Java-Entwickler
1. Performance-Monster-Nginx-Konzept in einfachen Worten erklärt
Nginx ist ein leichtes, leistungsstarkes HTTP Reverse-Proxy-Server. Es ist auch ein universeller Proxy-Server und unterstützt die meisten Protokolle, wie z. B. TCP, UDP, SMTP, HTTPS, etc. Nginx是目前负载均衡技术中的主流方案,几乎绝大部分项目都会使用它,Nginx是一个轻量级的高性能HTTP反向代理服务器,同时它也是一个通用类型的代理服务器,支持绝大部分协议,如TCP、UDP、SMTP、HTTPS等。
🎜Nginx ist dasselbe wie Redis, beide sind Produkte, die auf dem Multiplexing-Modell basieren, also ist es dasselbe wie Redis weist auch die Eigenschaften von "geringer Ressourcennutzung und hoher Parallelitätsunterstützung" auf. Theoretisch handelt es sich um einen einzelnen KnotenNginx unterstützt auch 5Wgleichzeitige Verbindungen, aber in der tatsächlichen Produktionsumgebung ist die Hardware-Grundlage vorhanden Ort und die Kombination ist einfach. Dieser Wert kann tatsächlich nach dem Tuning erreicht werden. 🎜🎜Werfen wir zuerst einen Blick darauf
Ursprünglich forderte der Client direkt den Zielserver an, und der Zielserver schloss die Anforderungsverarbeitung direkt ab, fügte jedoch Nginx, alle Anfragen durchlaufen zunächst Nginx, der dann zur Verarbeitung an den jeweiligen Server verteilt wird. Nach Abschluss der Verarbeitung wird Nginx, schließlich Nginx gibt das endgültige Antwortergebnis an den Client zurück. Nginx后,所有的请求会先经过Nginx,再由其进行分发到具体的服务器处理,处理完成后再返回Nginx,最后由Nginx将最终的响应结果返回给客户端。
[root@localhost]# mkdir /soft && mkdir /soft/nginx/
[root@localhost]# cd /soft/nginx/
❷下载Nginx的安装包,可以通过FTP工具上传离线环境包,也可通过wget
VerstandenNach den Grundkonzepten von Nginx Lassen Sie uns schnell die Umgebung einrichten und etwas lernen
2. Aufbau der Nginx-Umgebung
🎜❶Erstellen Sie zuerst Nginx Verzeichnis und geben Sie ein: 🎜
🎜❷DownloadNginxs Installationspaket kann FTP-Tool zum Hochladen des Offline-Umgebungspakets, Sie können auch wget Befehl zum Online-Abruf des Installationspakets: 🎜
@Controller
public class IndexNginxController {
@Value("${server.port}")
private String port;
@RequestMapping("/")
public ModelAndView index(){
ModelAndView model = new ModelAndView();
model.addObject("port", port);
model.setViewName("index");
return model;
}
}
Der Client initiiert eine Anfrage. Der Prozess ist wie folgt: 192.168.12.129最终会转变为:http://192.168.12.129:80/,然后再向目标IP
Anfrageverteilungsprinzip
Da Nginx监听了192.168.12.129的80端口,所以最终该请求会找到Nginx进程;
Nginx首先会根据配置的location规则进行匹配,根据客户端的请求路径/Nginx
den 80-Port von 🎜192.168.12.129 abhört, findet die Anfrage schließlich den 🎜Nginx-Prozess 🎜🎜🎜Nginx sucht zunächst nach den konfigurierten 🎜Standort-Regeln. Gemäß dem Anforderungspfad des Clients 🎜/ wird 🎜Standort /{} gesucht.规则;
Aber Sie können es jetzt genauso gut analysieren, die Homepage100+ Gibt es in der Anfrage mindestens 60 + gehört zu Yes. 🎜🎜Da so viele Anfragen statisch sind und sich diese Ressourcen höchstwahrscheinlich noch lange nicht ändern werden, warum sollten diese Anfragen dann vom Backend verarbeitet werden? Kann es vorher behandelt werden? Natürlich🎜OK~, nachdem ich die Notwendigkeit der dynamischen und statischen Trennung verstanden habe, wie erreicht man eine dynamische und statische Trennung? Es ist eigentlich ganz einfach, probieren Sie es einfach in der Praxis aus. 🎜🎜①Erste BereitstellungErstellen Sie ein Verzeichnis unter dem Nginx-Verzeichnisstatic_resources:🎜
Hinweise: ① Für Bild- und Videodaten ist der Komprimierungsmechanismus standardmäßig aktiviert, sodass im Allgemeinen keine Notwendigkeit besteht, die Komprimierung erneut zu aktivieren. ②Für application/javascript und Nottext/javascript、application/x-javascript
Lass uns zuerst über ein Problem nachdenken und auf Nginx→server", in diesem Prozess gibt es zwei Verbindungen: "Client End→Nginx、Nginx→server", dann sind die beiden unterschiedlichen Verbindungsgeschwindigkeiten inkonsistent, was sich auf den Benutzer auswirkt Erfahrung (z. B. kann die Ladegeschwindigkeit des Browsers nicht mit der Antwortgeschwindigkeit des Servers mithalten). 🎜🎜Tatsächlich ist es so, als ob der Speicher des Computers nicht mithalten kannCPU Geschwindigkeit, daher ist die Benutzererfahrung extrem schlecht, also in CPU fügt beim Entwerfen einen dreistufigen Hochgeschwindigkeitspuffer hinzu, um Konflikt inkonsistenter CPU und Speicherraten. In Nach dem Puffern Nginx Proxy kann die Backend-Antwort vorübergehend speichern und dann bei Bedarf Daten an den Client bereitstellen. Schauen wir uns zunächst einige Konfigurationselemente zum Puffer an: 🎜
on geschlossener Zustand . proxy_buffering:是否启用缓冲机制,默认为on关闭状态。
🎜🎜proxy_buffers : Legen Sie die Anzahl und Größe der Puffer für jede Anfrage/Verbindung fest, Standard4 4k/8k. 🎜🎜🎜🎜proxy_busy_buffers_size : Wenn die Backend-Daten nicht vollständig empfangen werden, busy Der Statuspuffer wird an den Client zurückgegeben. Dieser Parameter wird verwendet, um busy statusproxy_buffer_size*2 . 🎜
loader_files🎜keys_zone</ Code>: Geben Sie einen gemeinsamen Speicherplatz zum Speichern von Hotspot-Schlüsseln an (1 MB kann 8000 Schlüssel speichern). </section></li>🎜🎜<code style=" font-size: rgba mono consolas monaco menlo monospace break-all rgb>inactive Code>: Legen Sie fest, wie lange nicht auf den Cache zugegriffen wurde, bevor er gelöscht wird (Standard ist zehn Minuten). 🎜🎜<code style="font-size: 14px;padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;background-color: rgba( 27, 31, 35, 0.05);font-family: „Operator Mono“, Consolas, Monaco, Menlo, monospace;word-break: break-all;color: rgb(239, 112, 96);“>max_size</ Code>: Der maximal zulässige Speicherplatz für den Cache wird basierend auf dem LRU-Algorithmus entfernt. Nginx erstellt einen Cache-Manager-Prozess, um die Daten zu entfernen, oder er kann gelöscht werden. </section></li>🎜🎜<code style=" font-size: rgba mono consolas monaco menlo monospace break-all rgb>manager_files Code>: Die Obergrenze der Anzahl der Cache-Dateien, die der Manager-Prozess jedes Mal entfernt. 🎜🎜<code style="font-size: 14px;padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;background-color: rgba( 27, 31, 35, 0.05);font-family: „Operator Mono“, Consolas, Monaco, Menlo, monospace;word-break: break-all;color: rgb(239, 112, 96);“>manager_sleep</ code>: Die Obergrenze der Zeit, die der Manager-Prozess jedes Mal zum Entfernen zwischengespeicherter Dateien benötigt. </section></li>🎜🎜<code style=" font-size: rgba mono consolas monaco menlo monospace break-all rgb>manager_threshold Code>: Das Intervall zwischen jedem Entfernen des Caches durch den Managerprozess. 🎜🎜<code style="font-size: 14px;padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;background-color: rgba( 27, 31, 35, 0.05);font-family: „Operator Mono“, Consolas, Monaco, Menlo, monospace;word-break: break-all;color: rgb(239, 112, 96);“>loader_files</ Code>: Beim Neustart von Nginx wird der Cache geladen. Die Anzahl der jedes Mal geladenen Dateien beträgt standardmäßig 100.</section></li><li><section style=" margin-top: rgb><code style='font-size: 14px;padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;background-color: rgba(27, 31, 35, 0.05);font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break-all;color: rgb(239, 112, 96);'>loader_sleep:每次载入时,允许的最大时间上限,默认200ms。
10. Nginx-Anti-Hotlink-Design einfaches Beispiel zum Verstehen:
Wie eine Hintergrundbild-WebsiteY Station fällig Aus verschiedenen Gründen, z. B. zur Finanzierung, verwenden Sie einfach Alle Hintergrundressourcen auf der X-Site werden dann den Benutzern zum Herunterladen bereitgestellt. Wenn wir also so sindBoss muss unglücklich sein, also wie man blockt Gibt es derzeit ein solches Problem? Dann werde ich als nächstes darüber sprechen: „Anti-Diebstahl-Verknüpfung“: Hier ist!
Die obige Konfiguration muss nur als Proxy-Schicht konfiguriert werden, da der endgültige Client beim Übertragen von Dateien immer noch direkt mit dem Backend interagiert. Hier verwenden wir nur die Gateway-Schicht Nginx-Konfiguration wurde etwas höher angepasst, sodass sie "große Dateien" für die Übertragung aufnehmen kann. Natürlich nginx -upload-module, wenn das Hochladen von Dateien im Projekt keinen großen Nutzen hat, wird empfohlen, Nginx ist gebaut, schließlich kann es die Ressourcen eines Dateiservers schonen. Wenn jedoch häufig Datei-Uploads/Downloads erfolgen, empfiehlt es sich, einen zusätzlichen Dateiserver einzurichten und die Upload-/Download-Funktionen dem Backend zur Verarbeitung zu überlassen. Nginx配置调高一点,调到能够“容纳大文件”传输的程度。当然,Nginx中也可以作为文件服务器使用,但需要用到一个专门的第三方模块nginx-upload-module,如果项目中文件上传的作用处不多,那么建议可以通过Nginx搭建,毕竟可以节省一台文件服务器资源。但如若文件上传/下载较为频繁,那么还是建议额外搭建文件服务器,并将上传/下载功能交由后端处理。
Da immer mehr Websites verbunden sindHTTPS, also Nginx konfiguriert nur HTTP reicht nicht aus, oft muss auch überwacht werden443 Portanfrage, HTTPSUm die Kommunikationssicherheit zu gewährleisten, muss der Server das entsprechende digitale Zertifikat konfigurieren. Wenn das Projekt Wenn Nginx als Gateway verwendet wird, liegt das Zertifikat in Nginx muss ebenfalls konfiguriert werden. Als nächstes wollen wir kurz über SSL Zertifikatkonfigurationsprozess: 🎜
①Gehen Sie zunächst zur CA-Institution oder beantragen Sie den entsprechenden Nginx Version des Zertifikats. <code style='font-size: 14px;padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;background-color: rgba(27, 31, 35, 0.05);font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break-all;color: rgb(239, 112, 96);'>SSL证书,审核通过后下载Nginx版本的证书。
②下载数字证书后,完整的文件总共有三个:.crt、.key、.pem:
.crt:数字证书文件,.crt是.pem的拓展文件,因此有些人下载后可能没有。
.key:服务器的私钥文件,及非对称加密的私钥,用于解密公钥传输的数据。
.pem:Base64-encoded编码格式的源证书文本文件,可自行根需求修改拓展名。
③在Nginx目录下新建certificate目录,并将下载好的证书/私钥等文件上传至该目录。
④最后修改一下nginx.conf
②Nach dem Herunterladen des digitalen Zertifikats liegen insgesamt drei vollständige Dateien vor: .crt, .key, .pem: 🎜
.crt
ist .pem Erweiterungsdatei, daher haben einige Leute sie nach dem Herunterladen möglicherweise nicht mehr.
.key</codestil></section></li>: Private Schlüsseldatei des Servers und asymmetrische Verschlüsselung Der private Schlüssel wird zum Entschlüsseln der vom öffentlichen Schlüssel übertragenen Daten verwendet.
Sie können die virtuelle IP , nur wenn die Der Host geht offline, der Slave 35, 0,05);font-family: „Operator Mono“, Consolas, Monaco, Menlo, monospace;word-break: break-all;color: rgb(239, 112, 96) ;">192.168.12.130 wird online gehen und VIPKommunikation, also <code style="font-size: 14px;padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;background-color: rgba(27, 31, 35 , 0.05);font-family: „Operator Mono“, Consolas, Monaco, Menlo, monospace;word-break: break-all;color: rgb(239, 112, 96);“>Direkt in Windows</ code>< code style=" font-size: rgba mono consolas monaco menlo monospace break-all rgb>ping VIP:IP已经成功挂载,但另外一台机器192.168.12.130并不会挂载这个虚拟IP,只有当主机下线后,作为从机的192.168.12.130才会上线,接替VIP。最后测试一下外网是否可以正常与VIP通信,即在Windows中直接ping VIP:
Ping-VIP
外部通过VIP通信时,也可以正常Ping通,代表虚拟IP配置成功。
Nginx高可用性测试
经过上述步骤后,keepalived的VIP
Ping-VIP🎜🎜Extern überVIP-Kommunikation kann auch normal funktionierenPingpass, repräsentiert virtuelleIP erfolgreich konfiguriert. 🎜
Nginx-Hochverfügbarkeitstest
🎜Nach den obigen Schritten keepalived'sVIP-Mechanismus wurde erfolgreich eingerichtet. In der vorherigen Phase wurden mehrere wichtige Dinge erledigt: 🎜
Aus diesem Prozess ist es nicht schwer, keepalivedBereits für uns implementiert<code style="font-size: 14px;padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;background-color: rgba(27, 31 , 35, 0,05);font-family: „Operator Mono“, Consolas, Monaco, Menlo, monospace;word-break: break-all;color: rgb(239, 112, 96);“>Nginx is down Nach der automatischen Neustartfunktion simulieren Sie dann die Situation, wenn der Server ausfällt: Nginx宕机后自动重启的功能,那么接着再模拟一下服务器出现故障时的情况:
Im obigen Prozess schließen wir manuell keepalived Prozess verschwindet) und fragen Sie dann den IP Informationen, Sie werden offensichtlich VIP verschwunden!
Wechseln Sie nun zu einer anderen Maschine: 192.168 .12.130, und zu diesem Zeitpunkt wird die Anfrage des Clients schließlich zu 130Nginx on. 🎜🎜🎜 „Am Ende kann nach der Verwendung von Keepalived zur Implementierung eines Master-Slave-Hot-Backups für Nginx sichergestellt werden, dass das Anwendungssystem den Benutzern 7x24 Stunden lang Dienste bieten kann, unabhängig davon, ob verschiedene Fehler wie Online-Ausfälle oder Stromausfälle auftreten.“ im Computerraum
Das obige ist der detaillierte Inhalt von14 Nginx-Kernfunktionspunkte, zum Sammeln empfohlen!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
Stellungnahme:
Dieser Artikel ist reproduziert unter:Java后端技术全栈. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen