Vor einiger Zeit habe ich mich bei dem Server angemeldet, der zum Testen der Website des Unternehmens verwendet wurde, und zufällig ein Dateipaket „access.log.gz“ gesehen. Meine Neugier trieb mich dazu, es vom Remote-Server auf den lokalen Server herunterzuladen, es dann zu entpacken und zu öffnen Ich habe vorher immer gehört, dass es sich um ein Dateipaket handelte. Ich hatte nur eine Vorstellung davon, was es war Wenn ich es nicht verstehe, muss ich nachfragen. Eine Serversoftware namens Nginx. Nach einem kurzen Verständnis in meiner Freizeit fragte ich mich, ob ich Nginx während der täglichen Entwicklung und beim Debuggen auch die am häufigsten verwendeten Ports überwachen könnte Eine Art Lernen, denn wenn Sie es selbst tun, werden Sie eine tiefere Erfahrung machen, als wenn Sie nur Bücher oder Materialien lesen. Heute werden wir nur über die Konfiguration sprechen und im Laufe der Studie auch auf Lastausgleich, Reverse-Proxy, Optimierung usw. eingehen. Wenn etwas nicht stimmt, korrigieren Sie mich bitte, lernen Sie voneinander und machen Sie gemeinsam Fortschritte!
Im Vergleich zu Apaceh und anderen hat Nginx viele Vorteile. Ich werde sie hier nicht zu sehr betonen. Sie sind nichts weiter als hohe gleichzeitige Verbindungen, geringer Speicherverbrauch, niedrige Kosten. einfache Konfigurationsdateien usw.
(1) Installation
Die Installation von Nginx auf dem Ubuntu-System ist sehr einfach und kann mit nur einem Befehl durchgeführt werden.
sudo apt-get install nginx
Übrigens, wenn Sie während der Installation eine Fehlermeldung erhalten, meldet das Terminal „Die Paketliste oder Statusdatei konnte nicht analysiert oder geöffnet werden“. konkret wie folgt:
E: Es ist ein Abschnitt ohne Package:-Header aufgetreten
E: Problem mit MergeList /var/lib/apt/lists/cn.archive.ubuntu.com_ubuntu_dists_natty_main_i18n_Translation-en
E: Die Paketliste oder Statusdatei kann nicht analysiert oder geöffnet werden.
Lösung:
sudo rm /var/lib/apt/lists/* -vf //Wenn es nicht gelöscht werden kann, können Sie das Löschen erzwingen und den Parameter -r
hinzufügensudo apt-get update
Ein weiterer Punkt ist: Wenn Apache auf Ihrem Computer installiert ist und bereits ausgeführt wird, stoppen Sie Apache, da die Standardports von Apache und Nginx beide 80 sind.
Nach erfolgreicher Installation wird ein ausführbarer Befehl angezeigt. Öffnen Sie das Terminal und geben Sie den Befehl nginx -h ein. Daraufhin werden einige Befehlsparameterinformationen angezeigt.
nginx -h Befehlshilfe anzeigen
nginx -v Versionsinformationen anzeigen
nginx -V Versionsinformationen und Konfigurationsoptionen anzeigen
nginx - t Konfigurationsdatei testen
nginx -T Konfigurationsdatei testen und sichern
nginx -q Nicht-Fehlermeldungen während des Konfigurationstests unterdrücken
nginx -s signal Ein Signal an The senden Hauptprogramm, wobei die Signale Stopp, Stoppen, Beenden, erneutes Öffnen umfassen;
nginx -p prefix Legen Sie den Präfixpfad fest, der Standardwert ist /usr/share/nginx/
nginx -c filename Legen Sie die Konfigurationsdatei fest, der Standardwert ist /etc/nginx/nginx. conf
ngnix -g Directives legt globale Direktiven fest, die über den Bereich der Konfigurationsdatei hinausgehen
Hinweis: Wenn bei der Verwendung dieser Anweisungen ein Fehler auftritt, kann es sich um ein Berechtigungsproblem handeln. Wechseln Sie einfach zu root Ausführung.
(2) Konfigurationsdatei
Die Hauptkonfigurationsdatei ist nginx.conf und der Standardpfad befindet sich unter /etc/nginx/
Diejenige, die sich darauf bezieht PHP ist fastcgi_params, verwandt mit Python sind uwsgi_params
Konfigurationsdateiparameter und ihre Bedeutung ist wie folgt:
Benutzer www www;
Nginx-Benutzer und -Gruppe. Geben Sie nicht
worker_processes 8;
Anzahl der Worker-Prozesse unter Fenster an. Je nach Hardware-Anpassung entspricht sie in der Regel der Gesamtzahl der CPU-Kerne oder dem Doppelten der Gesamtzahl der Kerne.
error_log /var/logs/error.log crit;
Speicherpfad und Ebene des Fehlerprotokolls, die Ebene kann [debug|info|notice|warn|error|crdit] sein
Informationen zu den einzelnen Fehlerprotokollstufen finden Sie im Blogbeitrag http://blog.csdn.net/solmyr_biti/article/details/50634533
pid /run/nginx.pid;
PID-Prozess-ID-Speicherpfad. Die PID-Datei ist eine Textdatei mit nur einer Zeile Inhalt, in der die ID des Prozesses aufgezeichnet wird. Der Zweck der PID-Datei besteht darin, zu verhindern, dass ein Prozess mehrere Kopien startet. Nur der Prozess, der die Schreibberechtigung (F_WRLCK) der PID-Datei (fester Pfad und fester Dateiname) erhält, kann normal starten und seine eigene PID in die Datei schreiben. Andere redundante Prozesse desselben Programms werden automatisch beendet.
Verwenden Sie die PID-Datei von Nginx, um Nginx zu stoppen, neu zu starten und reibungslos neu zu starten.
Das Befehlsformat ist wie folgt:
kill -Signal type` cat /run/nginx.pid`
Die Hauptsignaltypen sind:
TERM,INT Schnelles Herunterfahren;
QUIT Einfaches Herunterfahren
HUP HUP Reibungsloses Herunterfahren, Konfigurationsdatei neu laden
USER1 Protokolldatei erneut öffnen, sehr nützlich beim Schneiden von Protokollen
USER2 Ausführbare Dateien reibungslos aktualisieren
WINCH Arbeitsprozesse ordnungsgemäß herunterfahren
worker_rlimit_nofile 51200;
Geben Sie die maximale Anzahl an an Prozesse, die geöffnet werden können Anzahl der Deskriptoren.
Dieser Befehl bezieht sich auf die maximale Anzahl der von einem Nginx-Prozess geöffneten Dateideskriptoren. Der theoretische Wert sollte die maximale Anzahl geöffneter Dateien (ulimit -n) geteilt durch die Anzahl der Nginx-Prozesse sein so einheitlich, also das Finale Es ist am besten, den Wert mit ulimit -n konsistent zu halten.
Jetzt beträgt die Anzahl der geöffneten Dateien unter dem Linux 2.6-Kernel 65535, und worker_rlimit_nofile sollte entsprechend mit 65535 ausgefüllt werden.
Das liegt daran, dass die Zuordnung von Anfragen zu Prozessen während der Nginx-Planung nicht so ausgewogen ist. Wenn Sie also 10240 eingeben und die Gesamtgleichzeitigkeit 30.000–40.000 erreicht, kann die Anzahl der Prozesse 10240 überschreiten und ein 502-Fehler auftreten wird zurückgegeben.
Ereignisse
{
epoll verwenden;
Das Netzwerk-E/A-Modell von epoll verwenden. Linux empfiehlt epoll, FreeBSD empfiehlt kqueue und wird unter Windows nicht angegeben.
Sie können relevante Informationen darüber überprüfen, wann Epoll, Select und Kqueue verwendet werden.
worker_connections 204800;
Die maximale Anzahl von Verbindungen pro Workerprozess. Passen Sie es entsprechend der Hardware an und verwenden Sie es in Verbindung mit dem vorherigen Arbeitsprozess. Versuchen Sie, es so groß wie möglich zu machen, aber lassen Sie die CPU nicht auf 100 % laufen. Die maximal zulässige Anzahl von Verbindungen pro Prozess beträgt theoretisch worker_processes*worker_connections
keepalive_timeout 60;
keepalive timeout.
client_header_buffer_size 4k;
Die Puffergröße des Client-Anforderungsheaders. Dies kann entsprechend der Paging-Größe Ihres Systems eingestellt werden. Im Allgemeinen wird die Größe eines Anforderungsheaders 1 KB nicht überschreiten. Da System-Paging jedoch im Allgemeinen größer als 1 KB ist, wird die Paging-Größe hier festgelegt.
Die Paging-Größe kann mit dem Befehl getconf PAGESIZE ermittelt werden.
Aber es gibt Fälle, in denen client_header_buffer_size 4 KB überschreitet, der Wert von client_header_buffer_size jedoch auf ein ganzzahliges Vielfaches der „System-Paging-Größe“ gesetzt werden muss.
open_file_cache max=65535 inactive=60s;
Dies gibt den Cache für geöffnete Dateien an. Es ist nicht standardmäßig aktiviert. Es wird empfohlen, konsistent zu sein Die Anzahl der geöffneten Dateien bedeutet die Zeitspanne, nach der die Datei nicht zum Löschen des Caches aufgefordert wurde.
open_file_cache_valid 80s;
Dies bezieht sich darauf, wie oft die zwischengespeicherten gültigen Informationen überprüft werden sollen.
open_file_cache_min_uses 1;
Die minimale Anzahl der Verwendungen der Datei innerhalb der inaktiven Parameterzeit der open_file_cache-Direktive. Wenn diese Anzahl überschritten wird, wird der Dateideskriptor immer im Cache geöffnet Wenn im obigen Beispiel eine Datei innerhalb der inaktiven Zeit nicht verwendet wird, wird sie entfernt.
}
##Im Folgenden wird der http-Server eingerichtet und seine Reverse-Proxy-Funktion verwendet, um Lastausgleichsunterstützung bereitzustellen
http
{
include mime.types;
Legen Sie den MIME-Typ fest, der durch die mime.type-Datei definiert wird
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$ http_user_agent" "$ http_x_forwarded_for"';
log_format log404 '$status [$time_local] $remote_addr $host$request_uri $sent_http_location';
Protokollformateinstellung.
$remote_addr und $http_x_forwarded_for werden zum Aufzeichnen der IP-Adresse des Clients verwendet;
$remote_user: werden zum Aufzeichnen des Client-Benutzernamens verwendet;
$time_local: werden zum Aufzeichnen der verwendet Zugriffszeit und Zeitzone;
$request: wird zum Aufzeichnen der URL und des HTTP-Protokolls der Anfrage verwendet;
$status: wird zum Aufzeichnen des Anforderungsstatus 200 verwendet,
$body_bytes_sent: Zeichnen Sie die Größe des Hauptinhalts der an den Client gesendeten Datei auf.
$http_referer: Wird zum Aufzeichnen des Seitenlinks verwendet, von dem aus zugegriffen wird.
$http_user_agent: Relevant aufzeichnen Informationen zum Browser des Kunden;
Normalerweise wird der Webserver hinter dem Reverse-Proxy platziert, sodass die IP-Adresse des Clients nicht abgerufen werden kann. Die über $remote_add erhaltene IP-Adresse ist die IP-Adresse des Reverse-Proxy-Servers. Der Reverse-Proxy-Server kann x_forwarded_for-Informationen zu den HTTP-Header-Informationen der weitergeleiteten Anforderung hinzufügen, um die IP-Adresse des ursprünglichen Clients und die Serveradresse der ursprünglichen Client-Anforderung aufzuzeichnen.
access_log logs/host.access.log main;
access_log logs/host.access.404.log log404;
Nachdem Sie den Befehl log_format verwendet haben, um das Protokollformat festzulegen , Sie müssen die access_log-Direktive verwenden, um den Speicherpfad der Protokolldatei anzugeben;
gzip on:
Aktivieren Sie die gzip-Komprimierungsausgabe, um die Netzwerkübertragung zu reduzieren.
gzip_min_length 1k
Legen Sie die für die Komprimierung zulässige Mindestanzahl an Bytes der Seite fest. Die Anzahl der Seitenbytes wird aus der Inhaltslänge des Headers ermittelt. Der Standardwert ist 20. Es wird empfohlen, die Anzahl der Bytes auf mehr als 1 KB festzulegen. Wenn sie weniger als 1 KB beträgt, wird die Komprimierung möglicherweise immer stärker.
gzip_buffers 4 16k
Stellen Sie das System so ein, dass es mehrere Cache-Einheiten zum Speichern des GZIP-Komprimierungsergebnisdatenstroms erhält. 4 16 KB bedeutet, dass Speicher in Einheiten von 16 KB beantragt wird, also das Vierfache der Größe der Originaldaten, die in Einheiten von 16 KB installiert werden sollen.
gzip_http_version 1.0
Wird verwendet, um die Version des http-Protokolls zu identifizieren. Frühere Browser unterstützten die Gzip-Komprimierung nicht und Benutzer sahen verstümmelte Zeichen. Daher wurde diese Option hinzugefügt, um frühere Versionen zu unterstützen Wenn Sie den Reverse-Proxy von Nginx verwenden und die Gzip-Komprimierung aktivieren möchten, setzen Sie ihn bitte auf 1.0, da die Endkommunikation http/1.0 ist.
gzip_comp_level 6
gzip-Komprimierungsverhältnis, 1 hat das kleinste Komprimierungsverhältnis und die schnellste Verarbeitungsgeschwindigkeit, 9 hat das größte Komprimierungsverhältnis, aber die langsamste Verarbeitungsgeschwindigkeit (schnelle Übertragung, verbraucht aber mehr CPU)
gzip_types
Entspricht dem MIME-Typ, egal ob angegeben oder nicht, der Typ „text/html“ wird immer komprimiert.
gzip_proxied any
Aktiviert, wenn Nginx als Reverse-Proxy verwendet wird, bestimmt es, ob die Komprimierung der vom Back-End-Server zurückgegebenen Ergebnisse aktiviert oder deaktiviert werden soll Der Back-End-Server muss den Header „Via“ zurückgeben.
gzip_vary on
bezieht sich auf den HTTP-Header: Accept-Encoding wird zum Antwortheader hinzugefügt, sodass der Front-End-Cache-Server beispielsweise gzip-komprimierte Seiten zwischenspeichern kann , unter Verwendung von Squid-Cache-Daten, die von Nginx komprimiert wurden. .
server_names_hash_bucket_size 128;
Die Hash-Tabelle, die Servernamen speichert, wird durch die Anweisungen server_names_hash_max_size und server_names_hash_bucket_size gesteuert. Die Parameter-Hash-Bucket-Größe entspricht immer der Größe der Hash-Tabelle und ist ein Vielfaches der Prozessor-Cache-Größe. Nachdem die Anzahl der Zugriffe auf den Speicher reduziert wurde, ist es möglich, die Suche nach Schlüsselwerten der Hash-Tabelle im Prozessor zu beschleunigen. Wenn die Hash-Bucket-Größe gleich der Größe des Prozessor-Cache ist, beträgt die Anzahl der Suchvorgänge im Speicher bei der Suche nach einem Schlüssel im schlimmsten Fall 2. Das erste Mal besteht darin, die Adresse der Speichereinheit zu ermitteln, und das zweite Mal darin, den Schlüsselwert in der Speichereinheit zu finden. Wenn Nginx daher eine Aufforderung ausgibt, dass die maximale Hash-Größe oder die Hash-Bucket-Größe erhöht werden muss, müssen Sie zunächst die Größe des vorherigen Parameters erhöhen.
client_header_buffer_size 4k;
Client-Anforderungsheader Die interne Puffergröße. Dies kann entsprechend der Paging-Größe Ihres Systems eingestellt werden. Im Allgemeinen wird die Header-Größe einer Anfrage 1 KB nicht überschreiten. Da das System-Paging jedoch im Allgemeinen größer als 1 KB ist, wird die Paging-Größe hier festgelegt. Die Paging-Größe kann mit dem Befehl getconf PAGESIZE ermittelt werden.
large_client_header_buffers 8 128k;
Puffergröße des Client-Anforderungsheaders. Standardmäßig verwendet Nginx den Puffer „client_header_buffer_size“, um den Headerwert zu lesen. Wenn der Header „
“ zu groß ist, verwendet es „large_client_header_buffers“, um ihn zu lesen.
open_file_cache max=102400 inactive=20s;
Diese Direktive gibt an, ob der Cache aktiviert ist. Außerdem werden die maximale Anzahl der Caches und die Cache-Zeit angegeben. Wir können eine relativ hohe maximale Zeit festlegen, damit wir sie löschen können, nachdem sie länger als 20 Sekunden inaktiv waren
open_file_cache_errors on | off
Standard: open_file_cache_errors off Verwendbare Felder: http, Server , Standort, diese Direktive gibt an, ob nach einer Datei gesucht und Cache-Fehler protokolliert werden sollen.
open_file_cache_min_uses
Syntax: open_file_cache_min_uses Zahl Standardwert: open_file_cache_min_uses 1 Verwendungsfelder: http, Server, Standort Diese Direktive gibt an Die minimale Anzahl von Dateien, die innerhalb eines bestimmten Zeitraums in den ungültigen Parametern der open_file_cache-Direktive verwendet werden können. Wenn ein größerer Wert verwendet wird, ist der Dateideskriptor immer im Cache geöffnet
open_file_cache_valid
Syntax: open_file_cache_valid time Standardwert: open_file_cache_valid 60 Verwendete Felder: http, server, location Diese Direktive gibt an, wann die gültigen Informationen der zwischengespeicherten Elemente in open_file_cache
client_max_body_size 300m überprüft werden müssen >
Einstellungen Die Größe der über Nginx hochgeladenen Datei sendfile on; aktiviert den effizienten Dateiübertragungsmodus. Die Sendfile-Anweisung gibt an, ob Nginx die Sendfile-Funktion aufruft, um die Datei auszugeben , wodurch der Kontextwechsel vom Benutzerbereich zum Kernelbereich reduziert wird. Wenn es für Anwendungen mit hoher Festplatten-E/A-Belastung wie Downloads verwendet wird, kann es deaktiviert werden, um die Geschwindigkeit der Festplatten- und Netzwerk-E/A-Verarbeitung auszugleichen und die Systemlast zu reduzieren. tcp_nopush on;Diese Option ermöglicht oder deaktiviert die Verwendung von socket. Diese Option wird nur verwendet, wenn sendfileTimeout-Zeit für die Backend-Server-Verbindung, Timeout-Zeit für das Initiieren des Handshakes und das Warten auf eine Antwort
proxy_read_timeout 180;
Wartezeit für die Backend-Server-Antwort nach erfolgreicher Verbindung, tatsächlich ist sie bereits eingetreten Backend-Warteschlange, die auf Verarbeitung wartet (Man kann auch sagen, dass es sich um die Zeit handelt, die der Back-End-Server benötigt, um die Anfrage zu verarbeiten)
proxy_send_timeout 180;
Die Daten des Back-End-Servers werden zurückgegeben Zeit bedeutet, dass der Back-End-Server alle Übertragungen innerhalb der angegebenen Zeit abschließen muss. Daten
proxy_buffer_size 4k
Legen Sie die Puffergröße für den ersten Teil der vom Proxy-Server gelesenen Antwort fest Dieser Teil der Antwort enthält standardmäßig einen kleinen Antwortheader. Die Größe des Werts entspricht der Größe eines in der Proxy_buffers-Direktive angegebenen Puffers, sie kann jedoch auf einen kleineren Wert
proxy_buffers 4 32k eingestellt werden >
ist für das Lesen von Antworten (vom Proxy-Server) eingestellt, der Standardwert ist auch die Paging-Größe, die je nach Betriebssystem 4 KB oder 8 KB betragen kannproxy_busy_buffers_size 64 KB; Puffergröße bei hoher Last (proxy_buffers*2) proxy_temp_file_write_size 64k;Wenn der Cache vom Server als Proxy verwendet wird, um auf temporäre Dateien zu reagieren, begrenzt diese Option die Größe der jeweils geschriebenen temporären Datei Zeit. Proxy_temp_path (kann während der Kompilierung angegeben werden), in welches Verzeichnis geschrieben werden soll. proxy_temp_path /data0/proxy_temp_dir;Die durch Proxy_temp_path und Proxy_cache_path angegebenen Pfade müssen sich in derselben Partition befindenproxy_cache_path /data0/proxy_cache_dirlevels=1:2keys_zone=cache_one:200m inactive=1d max_size=30g;
#Stellen Sie die Größe des Speicher-Cache-Speicherplatzes auf 200 MB und den Inhalt ein, auf den 1 Jahre lang nicht zugegriffen wurde Der Speicherplatz auf der Festplatte beträgt 30 GB.
keepalive_timeout 120;
Langes Verbindungs-Timeout in Sekunden Dieser Parameter ist sehr sensibel und hängt vom Browsertyp, der Timeout-Einstellung des Back-End-Servers und der Einstellung des Betriebssystems ab . Es kann separat eingestellt werden. Wenn eine lange Verbindung eine große Anzahl kleiner Dateien anfordert, können die Kosten für die Wiederherstellung der Verbindung gesenkt werden. Wenn jedoch eine große Datei hochgeladen wird, schlägt der Upload fehl, wenn er nicht innerhalb von 65 Sekunden abgeschlossen wird. Wenn die Einrichtungszeit zu lang ist und viele Benutzer vorhanden sind, wird die Aufrechterhaltung der Verbindung über einen langen Zeitraum viele Ressourcen beanspruchen.
send_timeout 120;
wird verwendet, um den Timeout-Zeitraum für die Beantwortung des Clients anzugeben. Dieses Timeout ist auf die Zeit zwischen zwei Verbindungsaktivitäten begrenzt. Wenn diese Zeit ohne Aktivität auf dem Client überschritten wird, schließt Nginx die Verbindung.
tcp_nodelay on;
Weisen Sie Nginx an, die Daten nicht zwischenzuspeichern, sondern sie Stück für Stück zu senden. Wenn Sie Daten rechtzeitig senden müssen, sollten Sie dieses Attribut für die Anwendung festlegen, damit dies der Fall ist Es wird eine kleine Dateninformation gesendet. Der Rückgabewert kann nicht sofort abgerufen werden.
client_body_buffer_size 512k;
Wenn Sie einen relativ großen Wert festlegen, z. B. 256 KB, ist es normal, ob Sie Firefox oder den IE-Browser verwenden, um Bilder zu übermitteln, die kleiner als 256 KB sind. Das Problem entsteht, wenn Sie diese Anweisung auskommentieren und die Standardeinstellung „client_body_buffer_size“ verwenden, die doppelt so groß wie die Seitengröße des Betriebssystems ist, also 8 KB oder 16 KB.
Unabhängig davon, ob Sie Firefox 4.0 oder IE8.0 verwenden, wird beim Senden eines relativ großen Bildes von etwa 200 KB 500 interner Serverfehler zurückgegeben.
proxy_intercept_errors on;
bedeutet, dass Nginx-Blockantworten verwendet werden mit HTTP-Antwortcode 400 oder höher.
Upstream-Backend {
Server 127.0.0.1:8027;
Server 127.0.0.1:8028;
Server 127.0.0.1:8029;
hash $request_uri;
}
Dies wurde unter Berücksichtigung von Lastausgleichsproblemen entwickelt.
Der Upstream von nginx unterstützt derzeit die folgenden Verteilungsmethoden
1. Polling (Standard)
Jede Anfrage wird nacheinander in chronologischer Reihenfolge an verschiedene Backend-Server verteilt Wenn der Server ausfällt, kann er automatisch beseitigt werden.
2. Gewichtung
gibt die Abfragewahrscheinlichkeit an. Die Gewichtung ist proportional zum Zugriffsverhältnis und wird verwendet, wenn die Back-End-Serverleistung ungleichmäßig ist.
Zum Beispiel:
Upstream-Backende {
Server 192.168.0.14 Gewicht=10;
Server 192.168.0.15 Gewicht=10;
}
3. ip_hash
Jede Anfrage wird entsprechend dem Hash-Ergebnis der abgerufenen IP zugewiesen, sodass jeder Besucher festen Zugriff auf einen Back-End-Server hat, der das Problem lösen kann Sitzungsproblem.
Zum Beispiel:
Upstream Bakend {
ip_hash;
Server 192.168.0.14:88;
Server 192.168.0.15: 80 ;
}
4. Fair (Drittanbieter)
Anfragen entsprechend der Antwortzeit des Backend-Servers zuweisen, und diejenigen mit kurzen Antwortzeiten werden zuerst zugewiesen .
Upstream-Backend {
Server Server1;
Server Server2;
fair;
}
5. url_hash (Dritter)
Verteilen Sie Anforderungen entsprechend dem Hash-Ergebnis der aufgerufenen URL, sodass jede URL an denselben Backend-Server weitergeleitet wird. Es ist effektiver, wenn der Backend-Server zwischengespeichert ist.
Beispiel: Hinzufügen einer Hash-Anweisung zum Upstream. Andere Parameter wie Gewicht können nicht in die Server-Anweisung geschrieben werden.
Upstream-Backend {
Server squid1 :3128;
server squid2:3128;
hash $request_uri;
hash_method crc32;
}
#Last definieren Ausgleich von Geräte-IP und Gerätestatus
Upstream Bakend{
ip_hash;
Server 127.0.0.1:9090 down;
Server 127.0.0.1:8080 Gewicht =2;
Server 127.0.0.1:6060;
Server 127.0.0.1:7070 Backup;
}
Auf dem Server, der verwendet werden muss Lastausgleich hinzugefügt
proxy_pass http://bakend/;
Der Status jedes Geräts ist auf Folgendes gesetzt:
1.down bedeutet, dass der einzelne Frontserver vorübergehend nicht verfügbar ist Teilnahme an der Ladung
2. Gewicht bedeutet, dass je größer das Gewicht, desto größer das Gewicht der Ladung.
3.max_fails: Die Anzahl der zulässigen Anforderungsfehler ist standardmäßig 1. Wenn die maximale Anzahl überschritten wird, wird der vom Modul „proxy_next_upstream“ definierte Fehler zurückgegeben
4.fail_timeout: Die Pausenzeit danach max_fails-Fehler.
5.Backup: Wenn alle anderen Nicht-Backup-Maschinen ausgefallen oder ausgelastet sind, fordern Sie die Backup-Maschine an. Daher wird diese Maschine den geringsten Druck haben.
nginx unterstützt die gleichzeitige Einrichtung mehrerer Lastausgleichsgruppen zur Verwendung durch ungenutzte Server.
Client_body_in_file_only ist auf Ein eingestellt. Sie können die Daten aus dem Client-Beitrag zum Debuggen in einer Datei aufzeichnen.
client_body_temp_path legt das Verzeichnis der aufgezeichneten Datei fest Verzeichnisse.
Standort Passen Sie die URL an. Sie können einen neuen Proxy-Lastausgleich durchführen
##Konfigurieren Sie die virtuelle Maschine
{
listen 80;
Listening-Port konfigurieren
server_name image.***.com;
Zugriffsdomänennamen konfigurieren
Standort ~* .(mp3|exe)$ {
Regulärer Ausdruck, Lastausgleich für Adressen, die mit „mp3 oder exe“ enden
proxy_pass http://img_relay$request_uri;
Set der Port des Proxyservers oder Sockets und die URL
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
Der Zweck der oben genannten drei Zeilen besteht darin, die vom Proxyserver empfangenen Benutzerinformationen an den realen Server zu übertragen
}
location /face {
if ($http_user_agent ~* "xnp") {
rewrite ^(.*)$ http://211.151.188.190:8080/ face.jpg Redirect;
}
#Dies betrifft das Problem der Rewrite-Regeln von Nginx, wir werden es im nächsten Abschnitt besprechen
proxy_pass http: //img_relay$request_uri;
proxy_set_header Host $host;
proxy_set_header 🎜>
}}
Aus dem Obigen ist auch ersichtlich, dass das Hauptformat der Datei nginx.conf ist:
Veranstaltungen
{
http
{
...
🎜>
} ......}Die Konfiguration von Nginx ist ein wichtiges Feature. Es kann mit der Definition von Stilen in CSS-Dateien verglichen werden. Untergeordnete Elemente erben die Stildefinition von übergeordneten Elementen und können wählen, ob sie diese überschreiben möchten. Eine ähnliche Vererbungsbeziehung besteht auch in der Nginx-Konfiguration.
Um das Vererbungsmodell der Nginx-Konfiguration zu verstehen, müssen Sie wissen, dass die Nginx-Konfiguration mehrere Blöcke hat. Beispielsweise werden im Serverkontext definierte Anweisungen im Server gespeichert {}-Block. Im http-Kontext definierte Anweisungen werden im http{}-Block gespeichert.
Es gibt 6 mögliche Kontexte in Nginx, die Reihenfolge von hoch nach niedrig ist:
Global
Http
Server
If
Standort
Verschachtelter Standort