Heim >php教程 >php手册 >Detaillierte Erläuterung der Konfiguration der Nginx-Konfigurationsdatei (nginx.conf).

Detaillierte Erläuterung der Konfiguration der Nginx-Konfigurationsdatei (nginx.conf).

WBOY
WBOYOriginal
2016-10-22 00:00:101417Durchsuche

Die Konfigurationsdetails der Nginx-Konfigurationsdatei nginx.conf lauten wie folgt:

Benutzer nginx nginx;

Nginx-Benutzer und -Gruppe: Benutzergruppe. Nicht angegeben unter Fenster

worker_processes 8;

Worker-Prozesse: Nummer. Abhängig von der Hardware-Anpassung ist sie in der Regel gleich der Anzahl der CPUs oder dem 2-fachen der Anzahl der CPUs.

error_log logs/error.log;

error_log logs/error.log info;

error_log logs/error.log info;

pid logs/nginx.pid;

pid (Prozess-ID): Speicherpfad.

worker_rlimit_nofile 204800;

Gibt die maximale Anzahl von Deskriptoren an, die ein Prozess öffnen kann.

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, gibt es möglicherweise mehr als 10240 Prozesse und es wird ein Fehler 502 zurückgegeben .

Ereignisse

{

Epoll verwenden;

Epolls I/O-Modell verwenden. Linux empfiehlt epoll, FreeBSD empfiehlt kqueue und wird unter Windows nicht angegeben.

Ergänzende Hinweise:

Ähnlich wie Apache verfügt Nginx über unterschiedliche Ereignismodelle für verschiedene Betriebssysteme

A) Standard-Ereignismodell

Auswählen und Abfragen gehören zum Standard-Ereignismodell, wenn das aktuelle System nicht existiert Als effizientere Methode wählt Nginx „Auswählen“ oder „Abfragen“

B) Effizientes Ereignismodell

Kqueue: Wird in FreeBSD 4.1, OpenBSD 2.9, NetBSD 2.0 und MacOS Absturz.

Epoll: Wird in Systemen mit Linux-Kernel Version 2.6 und höher verwendet.

/dev/poll: wird in Solaris 7 11/99, HP/UX 11.22 (Eventport), IRIX 6.5.15 und Tru64 UNIX 5.1A verwendet.

Eventport: wird in Solaris 10 verwendet. Um Kernel-Abstürze zu verhindern, ist die Installation von Sicherheitspatches erforderlich.

worker_connections 204800;

Die maximale Anzahl von Verbindungen pro Worker-Prozess. Passen Sie es an die 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. Theoretisch beträgt die maximale Anzahl von Verbindungen pro Nginx-Server. 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.

[root@web001 ~]# getconf PAGESIZE

4096

Aber es gibt auch Fälle, in denen client_header_buffer_size 4k überschreitet, der Wert 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 wird empfohlen, die Anzahl der geöffneten Dateien konsistent zu halten. Inaktiv bezieht sich darauf, wie lange es dauert, bis die Datei nach der Anforderung gelöscht wird.

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 Mindestanzahl der Verwendungen der Datei während des inaktiven Parameters in der open_file_cache-Anweisung. Wenn diese Zahl überschritten wird, wird der Dateideskriptor immer im Cache geöffnet, sofern vorhanden ist eine Datei innerhalb der inaktiven Zeit. Sobald sie nicht verwendet wird, wird sie entfernt.

}

##Stellen Sie den HTTP-Server ein und verwenden Sie seine Reverse-Proxy-Funktion, um Lastausgleichsunterstützung bereitzustellen

http

{

include mime.types

Legen Sie den MIME-Typ fest, Typ Definiert von mime.type file

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';

$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 Zugriffszeit und Zeitzone verwendet; $request: Wird zum Aufzeichnen der URL und des HTTP-Protokolls der Anfrage verwendet.

$status: Wird zum Aufzeichnen des Anforderungserfolgs verwendet. 200.

$body_bytes_sent: Wird zum Aufzeichnen der Größe des Hauptinhalts der Datei verwendet an den Client gesendet;

$http_referer: wird zum Aufzeichnen des Seitenlinks verwendet, von dem aus zugegriffen wird;

Normalerweise wird der Webserver hinter dem Reverse-Proxy platziert. sodass die IP-Adresse des Kunden nicht über $ abgerufen werden kann. Die von 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 die log_format-Direktive zum Festlegen des Protokollformats verwendet haben, müssen Sie die access_log-Direktive verwenden Geben Sie den Speicherort der Protokolldatei an.

server_names_hash_bucket_size 128; 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 besteht 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

client_header_buffer_size 4k erhöhen Client-Anfrage-Header. 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;

Client-Anfrage-Header-Puffergröße. Standardmäßig verwendet Nginx den Puffer „client_header_buffer_size“, um den Header-Wert zu lesen. Wenn der Header zu groß ist, verwendet er „large_client_header_buffers“, um ihn zu lesen.

open_file_cache max=102400 inactive=20s;

Diese Anweisung gibt an, ob der Cache aktiviert ist.

Beispiel: open_file_cache max=1000 inaktiv=20s;

open_file_cache_valid 2;

open_file_cache_errors on;
open_file_cache_errors on |. off Standardwert: open_file_cache_errors off verwenden Felder: http, Server, Standort Diese Direktive gibt an, ob Cache-Fehler bei der Suche nach einer Datei 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 die Felder an verwendet in open_file_cache Die minimale Anzahl von Dateien, die innerhalb eines bestimmten Zeitbereichs im ungültigen Parameter der Anweisung verwendet werden können. Wenn ein größerer Wert verwendet wird, ist der Dateideskriptor immer im Cache geöffnet : open_file_cache_valid time Standardwert: open_file_cache_valid 60 Verwendungsfelder: http, server, location Diese Anweisung gibt an, wann die gültigen Informationen der zwischengespeicherten Elemente in open_file_cache überprüft werden müssen.

client_max_body_size 300m;

Legen Sie die Größe der hochgeladenen Dateien fest nginx
sendfile on; sendfile-Direktive gibt an, ob nginx die Sendfile-Funktion (Zero-Copy-Modus) aufruft, um Dateien auszugeben. Für normale Anwendungen muss sie aktiviert sein. Wenn es für Anwendungen mit hoher Festplatten-E/A-Auslastung wie Downloads verwendet wird, kann es deaktiviert werden, um die Verarbeitungsgeschwindigkeit von Festplatten- und Netzwerk-E/A auszugleichen und die Systemverfügbarkeit zu reduzieren.

tcp_nopush on;

Diese Option ermöglicht oder deaktiviert die Verwendung von socket. Diese Option wird nur verwendet, wenn sendfile verwendet wird.
Die Zeitüberschreitungsdauer für die wartende Antwort des Backend-Servers timeout

proxy_read_timeout 180;

Nach erfolgreicher Verbindung ist die Wartezeit, die der Backend-Server benötigt, um tatsächlich in die Backend-Warteschlange zu gelangen und auf die Verarbeitung zu warten (man kann auch sagen, dass es sich um die Zeit handelt, die der Backend-Server benötigt, um zu verarbeiten). request)

proxy_send_timeout 180;

Backend-Server-Datenrückgabezeit_das heißt, der Backend-Server muss alle Daten innerhalb der angegebenen Zeit übertragen

proxy_buffer_size 256k;

Legen Sie den Puffer fest, aus dem der erste Teil der Antwort gelesen wird die Größe des Proxy-Serverbereichs. Normalerweise enthält dieser Teil der Antwort einen kleinen Antwortheader. Standardmäßig entspricht die Größe eines Puffers, der in der Proxy_buffers-Direktive angegeben ist, sie kann jedoch auf einen kleineren Wert proxy_buffers 4 256k ;

Legen Sie die Anzahl und Größe der Puffer fest, die zum Lesen von Antworten (vom Proxy-Server) verwendet werden. Der Standardwert ist auch die Paging-Größe, die je nach Betriebssystem 4k oder 8k betragen kann

proxy_busy_buffers_size 256k ;
proxy_temp_file_write_size 256k;

Legen Sie die Größe der Daten beim Schreiben von „proxy_temp_path“ fest, um zu verhindern, dass ein Arbeitsprozess zu lange blockiert, wenn Dateien übergeben werden.

proxy_temp_path /data0/proxy_temp_dir; muss sich in derselben Partition befinden

proxy_cache_path /data0/proxy_cache_dirlevels=1:2keys_zone=cache_one:200m inactive=1d max_size=30g;

#Stellen Sie die Speichercache-Speicherplatzgröße auf 200 MB ein, Inhalte, auf die nicht zugegriffen wurde für 1 Tag wird automatisch gelöscht und die Größe des Festplatten-Cache-Speicherplatzes beträgt 30 GB.

keepalive_timeout 120;

keepalive-Timeout.

tcp_nodelay on;

client_body_buffer_size 512 k; 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 ein interner Serverfehler von 500 zurückgegeben.

proxy_intercept_errors aktiviert.

bedeutet, dass Nginx verhindert, dass der HTTP-Antwortcode 400 oder mehr beträgt Hohe Resonanz.

Upstream-Backend {

Server 127.0.0.1:8028;

Hash $request_uri; Der Upstream von nginx unterstützt derzeit 4 Zuweisungsmethoden

1. Abfrage (Standard)

Jede Anfrage wird nacheinander in chronologischer Reihenfolge verschiedenen Back-End-Servern zugewiesen. Wenn der Back-End-Server ausfällt, kann dies automatisch erfolgen beseitigt.

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 Bakend {

Server 192.168.0.14 Gewicht=10;
Server 192.168.0.15 Gewicht=10;
}
2, ip_hash
Bei jeder Anfrage drücken Das Hash-Ergebnis der Zugriffs-IP wird so zugewiesen, dass jeder Besucher festen Zugriff auf einen Back-End-Server hat, wodurch das Sitzungsproblem gelöst werden kann.
Zum Beispiel:
upstream backend {

ip_hash;
server 192.168.0.14:88;
server 192.168.0.15:80;
}
3. fair (Dritter )
Anfragen werden basierend auf der Antwortzeit des Backend-Servers zugewiesen, wobei denjenigen mit kürzeren Antwortzeiten Vorrang eingeräumt wird.
Upstream-Backend {
Server Server1;

Server Server2;
fair;
}
4. url_hash (Dritter)
Anfragen entsprechend dem Hash-Ergebnis des Zugriffs verteilen URL: Leiten Sie jede URL an denselben Backend-Server weiter. Dies ist effektiver, wenn der Backend-Server zwischengespeichert ist.
Beispiel: Fügen Sie eine Hash-Anweisung zum Upstream hinzu. Hash_method ist der verwendete Hash-Algorithmus squid2: 3128;
hash $request_uri;

hash_method crc32;

}

Tipps:

Upstream Bakend{#Definieren Sie die IP-Adresse und den Gerätestatus des Lastausgleichsgeräts}{
ip_hash ;
Server 127.0.0.1:9090 ausgefallen;
Server 127.0.0.1:8080 Gewicht=2;
Server 127.0.0.1:6060;
Server 127.0.0.1:7070 Backup;

}

on
proxy_pass http://bakend/ zum Server hinzufügen, der den Lastausgleich verwenden muss
Der Status jedes Geräts ist auf Folgendes eingestellt:
1.down bedeutet, dass der vorherige Server dies nicht tun wird vorübergehend an der Ladung teilnehmen
2. 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 nach max_fails-Fehlern.
5.Sicherung: 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. Die Daten aus dem Client-Beitrag können zum Debuggen in einer Datei aufgezeichnet werden.
Client_body_temp_path legt das Verzeichnis der aufgezeichneten Datei fest stimmt mit der URL überein und kann umgeleitet werden.

## Konfigurieren Sie die virtuelle Maschine

Server

{

Listen 80;Konfigurieren Sie den Überwachungsport

Servername-Bild.* **.com;

Zugriffsdomänennamen konfigurieren

Standort ~* .(mp3|exe)$ {

Load-Balance-Adressen, die mit „mp3 oder exe“ enden

proxy_pass http://img_relay$request_uri ;

Eingestellt auf den Port oder Socket des Proxyservers und die URL

proxy_set_header Host $host;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ;

Die obigen drei Zeilen dienen dazu, 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 restart;

}

proxy_pass http://img_relay$request_uri;

proxy_set_header Host $host;

proxy_set_header {

if ($http_user_agent ~* "xnp") {

rewrite ^(.*)$ http://211.151.188.190:8080/face.jpg restart;

proxy_pass http: //img_relay$request_uri;

proxy_set_header Host $host;

proxy_set_header logs/image.log log404;

rewrite ^(.*)$ http:/ /211.151.188.190:8080/face.jpg weitergeleitet;

}

}

##Andere Beispiele

server

{

listen 80;

server_name *.*** .com *.***.cn;

location ~* .(mp3|exe)$ {

proxy_pass http: //img_relay$request_uri;

proxy_set_header X- Real-IP $remote_addr;

proxy_set_header .com/help/noimg.gif restart;

proxy_pass http://img_relay$request_uri;

proxy_set_header X-Real-IP $remote_addr; X-forward-for $ proxy_add_x_forwarded_for; location @fetch {

access_log /data/logs/baijiaqi.log log404; >}

}

server

{

listen 80;

server_name *.***img.com;

location ~* .(mp3|exe)$ {

Proxy_pass http://img_relay$request_uri;

proxy_set_header Host $host;

proxy_set_header rewrite ^(.*)$ http://i1.***img .com/help/noimg.gif;

proxy_pass http://img_relay$request_uri;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header 🎜 >error_page 404 = @fetch;

}

#access_log off;

location @fetch {

access_log /data/logs/baijiaqi.log log404;

rewrite ^(.*)$ http ://i1.***img.com/help/noimg.gif restart;

}

}

server

{

listen 8080;

server_name ngx-ha * **img.com;

location / {

access_log off;

}

server {

server_name imgsrc1. **.net;

root html;

server {

server_name ***.com w.***.com; /local/nginx/logs/access_log main;

location / {

rewrite ^(.*)$ http://www.***.com/ ; server {

listen 80;

server_name *******.com w.*******.com;

location / {

rewrite ^(.*)$ http://www.*******.com/

}

}

server {

listen 80;

server_name ******.com;

# access_log /usr/local/nginx/logs/access_log main;

rewrite ^(.*)$ http: //www.******.com/;

}

}

location /NginxStatus {

stub_status on;

access_log on;

auth_basic "NginxStatus"

auth_basic_user_file conf/htpasswd;

}

#Legen Sie die Adresse fest, um den Nginx-Status anzuzeigen

location ~ /.ht {

deny all;

}

#No access.htxxx Datei

}

Hinweis: Variable

Das Ngx_http_core_module-Modul unterstützt integrierte Variablen und ihre Namen stimmen mit den integrierten Variablen von Apache überein.

Die erste besteht darin, die Zeilen im Titel der Kundenanfrage zu beschreiben, z. B. $http_user_agent, $http_cookie usw.

Darüber hinaus gibt es einige andere Variablen

$args Diese Variable entspricht den Parametern in der Anforderungszeile

$content_length entspricht dem Wert von „Content_Length“ der Anforderungszeile.

$content_type ist gleich dem Wert von „Content_Type“ im Anfrage-Header

$document_root ist gleich dem Wert, der durch die Root-Direktive der aktuellen Anfrage angegeben wird

$document_uri ist dasselbe wie $uri

$host ist derselbe wie im Anforderungsheader. Der in der Zeile „Host“ angegebene Wert ist derselbe wie der Name des Servers, den die Anforderung erreicht (ohne die Hostzeile).

$limit_rate ermöglicht eine begrenzte Verbindungsrate

$request_method entspricht der Methode der Anfrage, normalerweise „GET“ oder „POST“. 🎜>$request_filename Der Pfadname der aktuell angeforderten Datei, angegeben durch Root oder Alias ​​und URI-Anfrage. Kombiniert

$request_body_file

$request_uri enthält den vollständigen Anfangs-URI der Parameter

$query_string ist dasselbe wie $args

$sheeme http-Modus (http, https) erfordert nur eine Auswertung, z. B.

Rewrite ^(. )$ $sheme://example.com$; , mit „HTTP/“ oder „HTTP/“

$server_addr Die IP des Servers, den die Anforderung erreicht, im Allgemeinen Der Zweck, den Wert dieser Variablen zu erhalten, besteht darin, einen Systemaufruf durchzuführen. Um Systemaufrufe zu vermeiden, ist es notwendig, die IP im Listen-Befehl anzugeben und den Bind-Parameter zu verwenden.

Der durch die $server_name-Anfrage erreichte Servername

Die Portnummer des durch die $server_port-Anfrage erreichten Servers

$uri entspricht dem URI in der aktuellen Anfrage, der vom Anfangswert abweichen kann , wie interne Umleitung oder Verwendung von Index

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Namespace Namespace in PHPNächster Artikel:Namespace Namespace in PHP