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.
./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. 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 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 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“. Im Hauptteil geschrieben. Der Standardwert ist nicht festgelegt und kann auf die Höchstgrenze von 65535 des Betriebssystems begrenzt werden. 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. 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. 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. 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. 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 Die maximale Anzahl an Bytes, die der Pufferproxy für Clientanforderungen puffert Modul Dieses Modul implementiert die Funktion von nginx als Reverse-Proxy-Server, inklusive Caching-Funktion (siehe auch Artikel) Nginx-Verbindungstimeout mit Backend-Server (Proxy-Verbindungstimeout) Nach erfolgreicher Verbindung das Timeout zwischen zwei erfolgreichen Antwortvorgängen mit dem Backend-Server (Proxy-Empfangstimeout) 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 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 Puffergröße bei hoher Belastung (proxy_buffers*2) 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. 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. Modul
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. 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. Servernamen wie „localhost“ und „www.example.com“ können mithilfe regulärer Ausdrücke abgeglichen werden. Modul 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. 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. Definiert den Standardzugriffsdateinamen unter dem Pfad, der normalerweise nach dem Stammverzeichnis platziert wird. 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; 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: 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 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:
|
>>: Redo-Dateiwartungsmethode der InnoDB-Engine
IIS7 muss bestätigen, ob das pseudostatische Modu...
Vorwort Jede gute Angewohnheit ist ein Schatz. Di...
[LeetCode] 176. Zweithöchstes Gehalt Schreiben Si...
Inhaltsverzeichnis Frontend Entwerfen und schreib...
In diesem Artikel wird der spezifische Code von V...
Bei Datenbanken, die schon lange laufen, besteht ...
Verwenden Sie HTML, CSS und JavaScript, um einen ...
Ich habe viele Online-Ressourcen zu diesem Problem...
Die Farbabstimmung beim Erstellen einer Website i...
Einführung Memcached ist ein verteiltes Caching-S...
Aktualisierung der Ereignisantwort: Aktualisierun...
Szenariobeschreibung In einem bestimmten System w...
Aktuell besteht die Anforderung, dass beim Klicke...
Bei der Verwendung von MySQL führen viele Entwick...
Heute zeige ich Ihnen einen gut aussehenden Zähle...