Detaillierte Beschreibung von nginx von der Kompilierung und Installation bis zur Beschreibung der Konfigurationsdatei auf Chinesisch

Detaillierte Beschreibung von nginx von der Kompilierung und Installation bis zur Beschreibung der Konfigurationsdatei auf Chinesisch

Dieser Artikel stellt Nginx ausführlich vor, von der Kompilierung und Installation bis hin zur Beschreibung der Konfigurationsdateien. Jeder Schritt wird ausführlich beschrieben und kann als Leitfaden für die Installation von Nginx verwendet werden.

Okay, kommen wir direkt zur Sache.

1. Installieren Sie nginx

1.1 Wählen Sie eine stabile Version von Nginx

Wir kompilieren und installieren nginx, um unsere eigenen Module anzupassen. Die Maschine ist CentOS 6.2 x86_64. Installieren Sie zuerst die fehlenden Abhängigkeiten:

# yum -y installiere gcc gcc-c++ make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel

Wenn diese Pakete auf yum nicht verfügbar sind, können Sie den Quellcode herunterladen, um sie zu kompilieren und zu installieren. Achten Sie beim Kompilieren einfach auf das Standardinstallationsverzeichnis, um sicherzustellen, dass diese dynamischen Bibliotheksdateien (ldconfig) bei der Installation von nginx unten gefunden werden können.

Laden Sie die stabile Version von nginx-1.6.3.tar.gz von https://www.jb51.net/softs/35633.html herunter und entpacken Sie sie in /usr/local/src.

Zur weiteren Vorbereitung laden wir noch zwei weitere Plug-In-Module herunter:

nginx_upstream_check_module-0.3.0.tar.gz —— Überprüfen Sie den Status des Backend-Servers

nginx-goodies-nginx-sticky-module-ng-bd312d586752.tar.gz – Backend-Lastausgleich zur Lösung des Session-Sticky-Problems

Es wird empfohlen, das Verzeichnis nach dem Dekomprimieren in /usr/local/src in nginx-sticky-module-ng-1.2.5 umzubenennen. Für die Verwendung in Verbindung mit dem Modul upstream_check sind zusätzliche Patches erforderlich. Bitte beachten Sie die praktische Konfiguration des Nginx-Lastausgleichs.

Bitte achten Sie auf die Kompatibilität zwischen den Plug-In- und Nginx-Versionen. Generell gilt: Je neuer das Plug-In, desto besser. Es besteht keine Notwendigkeit, neuem Nginx hinterherzujagen. Stabilität steht an erster Stelle.

nginx-1.4.7, nginx-sticky-module-1.1, nginx_upstream_check_module-0.2.0, diese Kombination ist auch in Ordnung.

Die Versionen sticky-1.1 und nginx-1.6 konnten aufgrund von Updates mit der Kompilierung nicht Schritt halten. (Sie können Tengine direkt verwenden, das diese Module standardmäßig enthält)

[root@cachets nginx-1.6.3]# pwd
/usr/local/src/nginx-1.6.3
[root@cachets nginx-1.6.3]# ./configure --prefix=/usr/local/nginx-1.6 --with-pcre \
> --mit-http_stub_status_module --mit-http_ssl_module \
> --mit-http_gzip_static_module --mit-http_realip_module \
> --add-module=../nginx_upstream_check_module-0.3.0

[root@cachets nginx-1.6.3]# make && make install

1.2 Beschreibung allgemeiner Nginx-Kompilierungsoptionen

Die meisten der häufig verwendeten Module von nginx werden standardmäßig beim Kompilieren von ./configure --help und denen, die mit --without beginnen, installiert.

--prefix=PATH: Geben Sie das Installationsverzeichnis von nginx an. Standardmäßig /usr/local/nginx
--conf-path=PATH: Legen Sie den Pfad zur Konfigurationsdatei nginx.conf fest. nginx ermöglicht den Start mit verschiedenen Konfigurationsdateien durch Verwendung der Option -c in der Befehlszeile. Der Standard ist prefix/conf/nginx.conf.
--user=name: Legt den Benutzer des Nginx-Arbeitsprozesses fest. Nachdem die Installation abgeschlossen ist, können Sie die Benutzerdirektive in der Konfigurationsdatei nginx.conf jederzeit ändern. Der Standardbenutzername ist „niemand“. --group=name ist ähnlich
--with-pcre: Legen Sie den Quellcodepfad der PCRE-Bibliothek fest. Wenn sie über yum installiert wurde, verwenden Sie --with-pcre, um die Bibliotheksdatei automatisch zu finden. Wenn Sie --with-pcre=PATH verwenden, müssen Sie den Quellcode der pcre-Bibliothek (Version 4.4 - 8.30) von der PCRE-Website herunterladen und entpacken. Den Rest erledigen die ./configure- und make-Befehle von Nginx. In der Standortdirektive und im Modul ngx_http_rewrite_module werden reguläre Perl-Ausdrücke verwendet.
--with-zlib=PATH: Geben Sie das Verzeichnis an, in das der zlib-Quellcode (Versionen 1.1.3 – 1.2.5) extrahiert werden soll. zlib wird benötigt, wenn das Netzwerkübertragungskomprimierungsmodul ngx_http_gzip_module standardmäßig aktiviert ist.
--with-http_ssl_module: Verwenden Sie das https-Protokollmodul. Standardmäßig wird dieses Modul nicht erstellt. Voraussetzung ist, dass openssl und openssl-devel installiert wurden
--with-http_stub_status_module: Wird verwendet, um den aktuellen Status von Nginx zu überwachen
--with-http_realip_module: Mit diesem Modul können wir den Wert der Client-IP-Adresse im Client-Anforderungsheader ändern (z. B. X-Real-IP oder X-Forwarded-For), wodurch der Backend-Server die ursprüngliche IP-Adresse des Clients aufzeichnen kann.
--add-module=PATH: Fügen Sie externe Module von Drittanbietern hinzu, wie etwa nginx-sticky-module-ng oder Cache-Modul. Jedes Mal, wenn ein neues Modul hinzugefügt wird, muss es neu kompiliert werden (Tengine kann ein neues Modul ohne Neukompilierung hinzufügen).
Hier ist eine andere Kompilierungslösung:

./konfigurieren \
> --prefix=/usr \
> --sbin-path=/usr/sbin/nginx \
> --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/nginx.pid \
> --lock-path=/var/lock/nginx.lock \  
> --user=nginx \
> --group=nginx \
> --mit-http_ssl_module \
> --mit-http_stub_status_module \
> --mit-http_gzip_static_module \
> --http-client-body-temp-path=/var/tmp/nginx/client/ \
> --http-proxy-temp-path=/var/tmp/nginx/proxy/ \
> --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \
> --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \
> --mit-pcre=../pcre-7.8
> --with-zlib=../zlib-1.2.3

1.3 Starten und Herunterfahren von Nginx

## Überprüfen Sie, ob die Konfigurationsdatei korrekt ist# /usr/local/nginx-1.6/sbin/nginx -t 
# ./sbin/nginx -V # Sie können die Kompilierungsoptionen sehen## Starten, Herunterfahren# ./sbin/nginx # Standardkonfigurationsdatei conf/nginx.conf, -c gibt an# ./sbin/nginx -s stop
oder pkill nginx

## Durch den Neustart wird die beim Start angegebene Konfigurationsdatei nicht geändert# ./sbin/nginx -s reload
oder kill -HUP `cat /usr/local/nginx-1.6/logs/nginx.pid`

Natürlich können Sie nginx auch als Systemdienst verwalten, nginx nach /etc/init.d/ herunterladen, den Pfad darin ändern und Ausführungsberechtigungen erteilen.

# Dienst nginx {Start|Stopp|Status|Neustart|Neuladen|Konfigurationstest}

1.4 Nginx Yum-Installation

Die Installation des RPM-Pakets mit yum ist viel einfacher als das Kompilieren und Installieren. Viele Module werden standardmäßig installiert, der Nachteil besteht jedoch darin, dass es keine Möglichkeit gibt, Module von Drittanbietern in Zukunft zu installieren.

# vi /etc/yum.repo.d/nginx.repo 
[nginx] 
Name = Nginx-Repository 
Basis-URL = http://nginx.org/packages/centos/$releasever/$basearch/ 
gpgcheck=0 
aktiviert=1

Den Rest erledigen Sie mit „yum install nginx“, oder Sie können „yum install nginx-1.6.3“ verwenden, um eine bestimmte Version zu installieren (vorausgesetzt, Sie sehen die entsprechende Version in den Paketen, die Standardeinstellung ist die neueste stabile Version).

2. nginx.conf-Konfigurationsdatei

Die Nginx-Konfigurationsdatei ist hauptsächlich in vier Teile unterteilt:

Haupteinstellungen (globale Einstellungen)

Server (Hosteinstellungen)

Upstream (Upstream-Servereinstellungen, hauptsächlich Reverse-Proxy und Konfiguration im Zusammenhang mit Lastenausgleich)

Standort (Einstellungen, nachdem eine URL mit einem bestimmten Standort übereinstimmt)

Jeder Abschnitt enthält mehrere Anweisungen.

Die im Hauptteil festgelegten Anweisungen wirken sich auf die Einstellungen aller anderen Teile aus.

Die Anweisungen im Serverteil dienen hauptsächlich dazu, den Domänennamen, die IP und den Port des virtuellen Hosts anzugeben.

Die Upstream-Direktive wird verwendet, um eine Reihe von Backend-Servern einzurichten, einen Reverse-Proxy einzurichten und den Lastenausgleich der Backend-Server durchzuführen.

Der Standortteil wird verwendet, um den Standort der Webseite abzugleichen (z. B. das Stammverzeichnis „/“, „/images“ usw.).

Die Beziehung zwischen ihnen ist: Server erbt Hauptserver, Standort erbt Server;

Upstream erbt weder Anweisungen noch wird es von ihnen geerbt. Es liegen eigene Spezialanweisungen vor, die sonst nirgendwo angewendet werden müssen.

Derzeit unterstützt nginx mehrere Direktivenkontexte:

2.1 Allgemeine Nginx-Konfiguration

Die folgende nginx.conf implementiert einfach ein Beispiel von nginx als Reverse-Proxy-Server am Front-End, der statische Dateien wie js und png verarbeitet und dynamische Anforderungen wie jsp an andere Tomcat-Server weiterleitet:

Benutzer www www;
Arbeiterprozesse 2;

Fehlerprotokollprotokolle/Fehler.log;
#error_log Protokolle/error.log Hinweis;
#error_log Protokolle/error.log-Info;

pid-Protokolle/nginx.pid;


Ereignisse {
  verwenden Sie epoll;
  Arbeiterverbindungen 2048;
}


http {
  mime.types einschließen;
  Standardtyp Anwendung/Oktett-Stream;

  #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  # '$status $body_bytes_sent "$http_referer" '
  # '"$http_user_agent" "$http_x_forwarded_for"';

  #access_log Protokolle/access.log Haupt;

  sendfile an;
  # tcp_nopush ein;

  KeepAlive-Timeout 65;

 # Stellen Sie die Gzip-Komprimierungsfunktion auf „gzip on“ ein;
  gzip_min_länge 1k;
  gzip_puffer 4 16k;
  gzip_http_version 1.0;
  gzip_comp_level 6;
  gzip_types Text/HTML-Text/Nur-Text/CSS-Text/Javascript-Anwendung/JSON-Anwendung/Javascript-Anwendung/X-Javascript-Anwendung/Xml;
  gzip_vary ein;
 
 # http_proxy setze Client_max_body_size auf 10 m;
  Client-Body-Puffergröße 128k;
  Proxy_Verbindungstimeout 75;
  Proxy_Sendezeitüberschreitung 75;
  Proxy_Lese_Timeout 75;
  Proxy-Puffergröße 4k;
  Proxy-Puffer 4 32k;
  Proxy_Busy_Buffer_Größe 64k;
  Proxy_Temp_File_Schreibgröße 64k;
  Proxy_temp_Pfad /usr/local/nginx/proxy_temp 1 2;

 # Legen Sie die Liste der Backend-Server für den Lastenausgleich im Upstream-Backend fest { 
       #ip_hash; 
       Server 192.168.10.100:8080 max_fails=2 Fail_Timeout=30s; 
       Server 192.168.10.101:8080 max_fails=2 Fail_Timeout=30s; 
  }

 # Sehr wichtiger virtueller Host-Konfigurationsserver {
    hören Sie 80;
    Servername itoatest.example.com;
    Stammverzeichnis /apps/oaapp;

    Zeichensatz UTF-8;
    access_log Protokolle/host.access.log Haupt;

    #Für alle / Lastenausgleich + Reverse-Proxy-Standort durchführen / {
      Stammverzeichnis /apps/oaapp;
      Index Index.jsp Index.html Index.htm;

      Proxy-Passwort http://backend; 
      Proxy_Redirect aus;
      # Der Backend-Webserver kann die echte IP des Benutzers über X-Forwarded-For erhalten
      Proxy_Set_Header Host $host;
      Proxy_Set_Header X-Real-IP $Remote_Addr; 
      proxy_set_header X-Weitergeleitet-Für $proxy_add_x_forwarded_for;
      Proxy_next_upstream-Fehler, Timeout, ungültiger Header, http_500, http_502, http_503, http_504;
      
    }

    #Statische Dateien, nginx verarbeitet sie selbst und fordert Tomcat nicht vom Backend an
    Standort ~* /download/ { 
      Stammverzeichnis /apps/oa/fs; 
      
    }
    Standort ~ .*\.(gif|jpg|jpeg|bmp|png|ico|txt|js|css)$  
    {  
      Stammverzeichnis /apps/oaapp;  
      läuft am 7. Tag ab; 
    }
    Standort /nginx_status {
      stub_status ein;
      Zugriff_Abmeldung;
      192.168.10.0/24 zulassen;
      alles leugnen;
    }

    Standort ~ ^/(WEB-INF)/ {  
      alles leugnen;  
    }
    #Fehlerseite 404 /404.html;

    # Server-Fehlerseiten auf die statische Seite /50x.html umleiten
    #
    Fehlerseite 500 502 503 504 /50x.html;
    Standort = /50x.html {
      Stamm-HTML;
    }
  }

 ## Andere virtuelle Hosts, Serverdirektive startet}

2.2 Beschreibung gängiger Nginx-Befehle

2.2.1 Globale Hauptkonfiguration von Nginx

Einige Parameter von nginx, die sich während der Laufzeit nicht auf bestimmte Geschäftsfunktionen (wie HTTP-Dienst oder E-Mail-Dienst-Proxy) beziehen, wie z. B. die Anzahl der Arbeitsprozesse, die laufende Identität usw.

woker_processes 2

Im Hauptabschnitt der Konfigurationsdatei auf oberster Ebene wird die Anzahl der Worker-Prozesse der Worker-Rolle angegeben. Der Master-Prozess empfängt Anfragen und verteilt diese zur Verarbeitung an die Worker. Dieser Wert kann einfach auf die Anzahl der CPU-Kerne eingestellt werden grep ^processor /proc/cpuinfo | wc -l , was ebenfalls ein automatischer Wert ist. Wenn SSL und gzip aktiviert sind, sollte der Wert auf die gleiche oder sogar die doppelte Anzahl der logischen CPUs eingestellt werden, um die Anzahl der E/A-Vorgänge zu reduzieren. Wenn der Nginx-Server über andere Dienste verfügt, können Sie eine entsprechende Reduzierung dieser in Betracht ziehen.

worker_cpu_affinity

Es steht auch im Hauptteil. In Situationen mit hoher Parallelität kann die CPU-Stickiness eingestellt werden, um den Leistungsverlust zu verringern, der durch die Rekonstruktion von Registern vor Ort aufgrund des Umschaltens zwischen mehreren CPU-Kernen verursacht wird. Wie beispielsweise worker_cpu_affinity 0001 0010 0100 1000; (Quad-Core).

worker_connections 2048

Geschrieben im Abschnitt „Veranstaltungen“. Die maximale Anzahl an Verbindungen, die jeder Arbeitsprozess gleichzeitig verarbeiten (initiieren) kann (einschließlich aller Verbindungen mit Clients oder Back-End-Proxyservern). Als Reverse-Proxy-Server verwendet nginx die Formel zur Berechnung der maximalen Anzahl von Verbindungen = worker_processes * worker_connections/4, sodass die maximale Anzahl von Client-Verbindungen hier 1024 beträgt. Diese kann je nach Situation auf 8192 erhöht werden, darf jedoch die unten stehende Einstellung worker_rlimit_nofile nicht überschreiten. Wenn nginx als HTTP-Server verwendet wird, lautet die Berechnungsformel „durch 2 teilen“.

worker_rlimit_nofile 10240

Im Hauptteil geschrieben. Der Standardwert ist nicht festgelegt und kann auf die Höchstgrenze von 65535 des Betriebssystems begrenzt werden.

use epoll

Geschrieben im Abschnitt „Veranstaltungen“. Unter dem Linux-Betriebssystem verwendet nginx standardmäßig das Epoll-Ereignismodell. Dadurch ist nginx unter dem Linux-Betriebssystem recht effizient. Gleichzeitig verwendet Nginx auf den Betriebssystemen OpenBSD oder FreeBSD kqueue, ein effizientes Ereignismodell ähnlich epoll. Select wird nur verwendet, wenn das Betriebssystem diese effizienten Modelle nicht unterstützt.

2.2.2 Nginx HTTP-Server

Einige Konfigurationsparameter im Zusammenhang mit der Bereitstellung von HTTP-Diensten. Zum Beispiel: ob Keepalive verwendet werden soll, ob GZIP-Komprimierung verwendet werden soll usw.

sendfile on

Aktivieren Sie den effizienten Dateiübertragungsmodus. Die Sendfile-Direktive gibt an, ob nginx die Sendfile-Funktion zum Ausgeben von Dateien aufruft, wodurch der Kontextwechsel vom Benutzerbereich zum Kernelbereich reduziert wird. Stellen Sie es für allgemeine Anwendungen auf „Ein“. Wenn es für Anwendungen mit hoher Festplatten-E/A-Belastung wie z. B. Downloads verwendet wird, kann es auf „Aus“ gestellt werden, um die Festplatten- und Netzwerk-E/A-Verarbeitungsgeschwindigkeiten auszugleichen und die Systemlast zu reduzieren.

keepalive_timeout 65

Das lange Verbindungstimeout wird in Sekunden angegeben. Dieser Parameter ist sehr sensibel und betrifft den Browsertyp, die Timeout-Einstellung des Backend-Servers und die Einstellung des Betriebssystems. Dies kann in einem anderen Artikel besprochen werden. Wenn eine lange Verbindung eine große Anzahl kleiner Dateien anfordert, kann dies den Aufwand für die Wiederherstellung der Verbindung verringern. Das Hochladen einer großen Datei schlägt jedoch fehl, wenn dies nicht innerhalb von 65 Sekunden geschieht. Wenn die Einrichtungszeit zu lang ist und es viele Benutzer gibt, wird die Aufrechterhaltung der Verbindung über einen längeren Zeitraum viele Ressourcen beanspruchen.

send_timeout

Wird verwendet, um das Timeout für die Antwort an den Client anzugeben. Dieses Timeout ist auf die Zeit zwischen zwei Verbindungsaktivitäten begrenzt. Wenn nach dieser Zeit keine Aktivität vom Client erfolgt, schließt Nginx die Verbindung.

client_max_body_size 10m

Die maximale Anzahl an Bytes einer einzelnen Datei, die vom Client angefordert werden darf. Wenn Sie große Dateien hochladen, legen Sie bitte ein Limit fest

client_body_buffer_size 128k

Die maximale Anzahl an Bytes, die der Pufferproxy für Clientanforderungen puffert

Modul http_proxy

Dieses Modul implementiert die Funktion von nginx als Reverse-Proxy-Server, inklusive Caching-Funktion (siehe auch Artikel)

proxy_connect_timeout 60

Nginx-Verbindungstimeout mit Backend-Server (Proxy-Verbindungstimeout)

proxy_read_timeout 60

Nach erfolgreicher Verbindung das Timeout zwischen zwei erfolgreichen Antwortvorgängen mit dem Backend-Server (Proxy-Empfangstimeout)

proxy_buffer_size 4k

Legen Sie die Größe des Puffers fest, den der Proxyserver (nginx) zum Lesen und Speichern von Benutzerheaderinformationen vom Backend-Realserver verwendet. Standardmäßig entspricht dies der Größe von Proxy_Buffer. Tatsächlich können Sie diesen Direktivenwert auf einen kleineren Wert festlegen.

proxy_buffers 4 32k

proxy_buffers buffer, nginx speichert die Antwort vom Backend-Realserver für eine einzelne Verbindung im Cache. Wenn die durchschnittliche Webseitengröße weniger als 32 KB beträgt, stellen Sie sie wie folgt ein

proxy_busy_buffers_size 64k

Puffergröße bei hoher Belastung (proxy_buffers*2)

proxy_max_temp_file_size

Wenn Proxy_Buffer den Antwortinhalt vom Backend-Server nicht speichern können, wird ein Teil davon in einer temporären Datei auf der Festplatte gespeichert. Dieser Wert wird verwendet, um die maximale Größe der temporären Datei festzulegen, die standardmäßig 1024 MB beträgt. Er hat nichts mit Proxy_Cache zu tun. Wenn es größer als dieser Wert ist, wird es vom Upstream-Server zurückgesendet. Zum Deaktivieren auf 0 setzen.

proxy_temp_file_write_size 64k

Beim Zwischenspeichern von Antworten über Proxy-Server in temporären Dateien begrenzt diese Option die Größe jedes Schreibvorgangs in die temporäre Datei. proxy_temp_path (kann zur Kompilierungszeit verwendet werden) gibt das Verzeichnis an, in das geschrieben werden soll.

proxy_pass,proxy_redirect見location 部分。

Modul http_gzip :

gzip ein: Aktivieren Sie die Gzip-Komprimierungsausgabe, um die Netzwerkübertragung zu reduzieren.
gzip_min_length 1k: Legt die Mindestanzahl an Bytes fest, die für komprimierte Seiten zulässig ist. Die Anzahl der Bytes für die Seite wird aus dem Content-Length-Header abgerufen. Der Standardwert ist 20. Es wird empfohlen, die Anzahl der Bytes auf über 1 KB festzulegen. Wenn sie unter 1 KB liegt, kann sich die Komprimierung erhöhen.
gzip_buffers 4 16k: Richten Sie das System so ein, dass mehrere Cache-Einheiten zum Speichern des Datenstroms mit den Ergebnissen der GZIP-Komprimierung erhalten werden. 4 16k bedeutet, dass der Speicher in Einheiten von 16k angefordert wird. Der Speicher wird in Einheiten von 16k mit der vierfachen Größe der Originaldaten angefordert.
gzip_http_version 1.0: Wird verwendet, um die Version des HTTP-Protokolls zu identifizieren. Frühere Browser unterstützen die Gzip-Komprimierung nicht, und Benutzer sehen verstümmelte Zeichen. Daher wurde diese Option hinzugefügt, um frühere Versionen zu unterstützen. Wenn Sie Nginx als Reverse-Proxy verwenden und die Gzip-Komprimierung aktivieren möchten, setzen Sie es bitte auf 1.0, da die Terminalkommunikation http/1.0 ist.
gzip_comp_level 6: gzip-Komprimierungsrate, 1 bedeutet die niedrigste Komprimierungsrate und schnellste Verarbeitungsgeschwindigkeit, 9 bedeutet die höchste Komprimierungsrate, aber die langsamste Verarbeitungsgeschwindigkeit (schnellere Übertragung, aber höherer CPU-Verbrauch)
gzip_types: Passt MIME-Typen für die Komprimierung an. Unabhängig davon, ob es angegeben ist, wird der Typ „text/html“ immer komprimiert.
gzip_proxied any: Aktiviert, wenn Nginx als Reverse-Proxy verwendet wird. Es bestimmt, ob die Komprimierung der vom Backend-Server zurückgegebenen Ergebnisse aktiviert oder deaktiviert werden soll. Voraussetzung für die Übereinstimmung ist, dass der Backend-Server einen Header mit „Via“ zurückgeben muss.
gzip_vary on: Es bezieht sich auf den HTTP-Header. Es fügt dem Antwortheader Vary: Accept-Encoding hinzu, damit der Front-End-Cache-Server gzip-komprimierte Seiten zwischenspeichern kann. Verwenden Sie beispielsweise Squid, um von Nginx komprimierte Daten zwischenzuspeichern.

2.2.3 Virtueller Host des Nginx-Servers

Auf dem HTTP-Dienst werden mehrere virtuelle Hosts unterstützt. Jeder virtuelle Host verfügt über ein entsprechendes Serverkonfigurationselement, das die mit dem virtuellen Host verbundene Konfiguration enthält. Beim Anbieten eines Maildienst-Proxys können Sie auch mehrere Server einrichten. Jeder Server wird durch die Abhöradresse oder den Abhörport unterschieden.

listen

Der Standard-Abhörport ist 80. Wenn der Port kleiner als 1024 ist, muss er als Root gestartet werden. Es kann die Form „listen *:80“, „listen 127.0.0.1:80“ usw. haben.

server_name

Servernamen wie „localhost“ und „www.example.com“ können mithilfe regulärer Ausdrücke abgeglichen werden.

Modul http_stream

Dieses Modul verwendet einen einfachen Planungsalgorithmus, um einen Lastenausgleich von der Client-IP zu den Backend-Servern zu erreichen. Auf den Upstream folgt der Name des Lastenausgleichs, und der Backend-Realserver ist in {} in der Form von Host:Port-Optionen; organisiert. Wenn nur ein Backend geproxied wird, können Sie es auch direkt in proxy_pass schreiben.

2.2.4 Nginx-Standort

Im HTTP-Dienst eine Reihe von Konfigurationselementen, die bestimmten URLs entsprechen.

root /var/www/html

Definiert den standardmäßigen Website-Stammspeicherort für den Server. Wenn die LocationURL mit einem Unterverzeichnis oder einer Datei übereinstimmt, hat root keine Auswirkung und wird normalerweise in der Serverdirektive oder unter / platziert.

index index.jsp index.html index.htm

Definiert den Standardzugriffsdateinamen unter dem Pfad, der normalerweise nach dem Stammverzeichnis platziert wird.

proxy_pass http:/backend

Die Anfrage wird an die vom Backend definierte Serverliste, also den Reverse-Proxy, weitergeleitet, der dem vorgelagerten Load Balancer entspricht. Sie können auch http://ip:port per Proxy weitergeben.

Proxy_Redirect aus;
Proxy_Set_Header Host $host;
Proxy_Set_Header X-Real-IP $Remote_Addr;
proxy_set_header X-Weitergeleitet-Für $proxy_add_x_forwarded_for;

Lassen Sie uns zunächst nur diese vier Punkte festlegen. Wenn wir tiefer eintauchen, handelt es sich bei jedem einzelnen um sehr komplexe Inhalte, die in einem weiteren Artikel erläutert werden.

In Bezug auf das Schreiben von Standortübereinstimmungsregeln kann gesagt werden, dass dies besonders kritisch und grundlegend ist. Weitere Informationen finden Sie im Artikel Zusammenfassung der Nginx-Konfigurationsstandorte und Schreiben von Neuschreibregeln.

2.3 Sonstiges

2.3.1 Zugriffskontrolle erlauben/verweigern

Das Zugriffskontrollmodul von Nginx ist standardmäßig installiert und sehr einfach zu schreiben. Sie können mehrere Zulassungs- und Ablehnungsregeln haben, um den Zugriff auf eine bestimmte IP oder ein bestimmtes IP-Segment zuzulassen oder zu verweigern. Wenn eine Regel erfüllt ist, wird die Zuordnung beendet. wie:

Standort /nginx-status {
 stub_status ein;
 Zugriff_Abmeldung;
# auth_basic "NginxStatus";
# auth_basic_user_file /usr/local/nginx-1.6/htpasswd;

 erlauben Sie 192.168.10.100;
 erlaube 172.29.73.0/24;
 alles leugnen;
}

Wir verwenden auch oft das httpd-devel-Tool htpasswd, um das Anmeldekennwort für den Zugriffspfad festzulegen:

# htpasswd -c htpasswd admin
Neues Passwort:
Geben Sie das neue Passwort erneut ein:
Hinzufügen eines Passworts für den Benutzeradministrator

# htpasswd htpasswd admin //Administratorkennwort ändern # htpasswd htpasswd sean //Weiteren Authentifizierungsbenutzer hinzufügen

Dadurch wird eine Kennwortdatei generiert, die standardmäßig mit CRYPT verschlüsselt ist. Öffnen Sie die beiden Kommentarzeilen im obigen Nginx-Status und starten Sie Nginx neu, damit die Änderungen wirksam werden.

2.3.2 Nginx listet Verzeichnisse automatisch auf

Standardmäßig erlaubt Nginx nicht die Auflistung ganzer Verzeichnisse. Um diese Funktion zu nutzen, öffnen Sie die Datei nginx.conf und fügen Sie autoindex on; zum Abschnitt location, server oder http hinzu. Am besten fügen Sie auch die beiden anderen Parameter hinzu:

autoindex_exact_size off;

Die Standardeinstellung ist „Ein“, d. h. die genaue Größe der Datei wird in Bytes angezeigt. Nach dem Ausschalten wird die ungefähre Größe der Datei in kB, MB oder GB angezeigt

autoindex_localtime on;

Die Standardeinstellung ist „Aus“ und die angezeigte Dateizeit ist die GMT-Zeit. Nach dem Wechsel auf „Ein“ ist die angezeigte Dateizeit die Serverzeit der Datei

Standort /Bilder {
 Wurzel /var/www/nginx-default/images;
 Autoindex aktiviert;
 autoindex_exact_size aus;
 autoindex_localtime ein;
 }

Das Obige ist der Hauptinhalt der detaillierten Einführung in Nginx von der Kompilierung und Installation bis zur Beschreibung der Konfigurationsdateien auf Chinesisch. Ich hoffe, es wird für alle hilfreich sein. Weitere hervorragende Artikel zur Kompilierung, Installation und Konfiguration von Nginx finden Sie in den folgenden verwandten Artikeln. Sie können weiterlesen

Das könnte Sie auch interessieren:
  • Nginx-Serverkonfiguration HTTPS nginx.config-Konfigurationsdatei (Tutorial)
  • Detaillierte Erläuterung des Konfigurationsbeispiels nginx.config von ThinkPHP in der Alibaba Cloud
  • Detaillierte Beschreibung der Nginx-Konfigurationsdatei nginx.conf
  • Konfigurationsdetails der Nginx-Konfigurationsdatei (nginx.conf) (Zusammenfassung)
  • Detaillierte Erklärung der Konfigurationsdatei nginx.conf im Nginx-Server
  • Allgemeine Konfigurationsmethoden der Nginx-Konfigurationsdatei nginx.conf
  • Eine relativ vollständige Erklärung der allgemeinen Parameter der Nginx-Konfigurationsdatei nginx.conf auf Chinesisch
  • Chinesische Kommentare zur Konfigurationsdatei nginx.conf von Nginx
  • Chinesische Kommentare zur Nginx-Konfigurationsdatei nginx.conf

<<:  Implementierungsschritte der objektorientierten Kapselung von js in einer kaskadierenden Dropdown-Menüliste

>>:  Redo-Dateiwartungsmethode der InnoDB-Engine

Artikel empfehlen

IIS7 IIS8 http springt automatisch zu HTTPS (Port 80 springt zu Port 443)

IIS7 muss bestätigen, ob das pseudostatische Modu...

21 Best Practices zur MySQL-Standardisierung und -Optimierung!

Vorwort Jede gute Angewohnheit ist ein Schatz. Di...

SQL-Implementierung LeetCode (176. Zweithöchstes Gehalt)

[LeetCode] 176. Zweithöchstes Gehalt Schreiben Si...

Implementierung des React Page Turner (inkl. Front- und Backend)

Inhaltsverzeichnis Frontend Entwerfen und schreib...

Vue erzielt einen nahtlosen Karusselleffekt

In diesem Artikel wird der spezifische Code von V...

JS implementiert einen einfachen Zähler

Verwenden Sie HTML, CSS und JavaScript, um einen ...

Sieben verschiedene Farbschemata für das Website-Design-Erlebnis

Die Farbabstimmung beim Erstellen einer Website i...

Detaillierte Erklärung der Mencached-Cache-Konfiguration basierend auf Nginx

Einführung Memcached ist ein verteiltes Caching-S...

Implementierungscode für die teilweise Aktualisierung einer HTML-Seite

Aktualisierung der Ereignisantwort: Aktualisierun...

Was tun, wenn der von Docker Run gestartete Container hängt und Daten verliert?

Szenariobeschreibung In einem bestimmten System w...

MySQL-Lösung zur funktionalen Indexoptimierung

Bei der Verwendung von MySQL führen viele Entwick...

Native JS implementiert einen sehr gut aussehenden Zähler

Heute zeige ich Ihnen einen gut aussehenden Zähle...