Detaillierte Erläuterung zum Erstellen eines Nginx-Websiteservers basierend auf CentOS7 (einschließlich der Konfiguration eines virtuellen Webhosts)

Detaillierte Erläuterung zum Erstellen eines Nginx-Websiteservers basierend auf CentOS7 (einschließlich der Konfiguration eines virtuellen Webhosts)

1. Nginx-Dienstgrundlage

Nginx (Engine x) wurde speziell zur Leistungsoptimierung entwickelt. Seine Merkmale sind geringer Speicherbedarf, Stabilität und geringer Verbrauch von Systemressourcen sowie hohe Verarbeitungsleistung für gleichzeitige Verbindungen (ein einzelner physischer Server kann 5000 gleichzeitige Anfragen unterstützen). Tatsächlich ist die Parallelitätsfähigkeit von nginx besser als bei anderen Webservern desselben Typs. Zu den Website-Benutzern, die nginx auf dem chinesischen Festland verwenden, gehören: Baidu, JD.com, Sina, NetEase, Tencent, Taobao usw. IMAP/POP3/SMTP-Dienste werden ebenfalls bereitgestellt.

Vorteile von Nginx:

*** Hohe Anzahl gleichzeitiger Verbindungen möglich**
Offiziellen Tests zufolge kann Nginx 50.000 gleichzeitige Verbindungen unterstützen, in tatsächlichen Produktionsumgebungen sind es 20.000 bis 40.000 gleichzeitige Verbindungen.
*** Geringe Speichernutzung **
Nginx+PHP (FastCGI)-Server, mit 30.000 gleichzeitigen Verbindungen, 10 Nginx-Prozesse verbrauchen 150 MB Speicher, 15 MB*10=150 MB, und 64 PHP-CGI-Prozesse verbrauchen 1280 MB Speicher, 20 MB*64=1280 MB. Zusammen mit dem vom System selbst verbrauchten Speicher beträgt der gesamte verbrauchte Speicher weniger als 2 GB.
*** Niedrige Kosten**
Der Kauf von Hardware-Lastausgleichsschaltern wie F5BIG-IP und NetScaler kostet mehr als 100.000 bis mehrere Hunderttausend RMB. Nginx ist Open-Source-Software, die ein BSD-ähnliches 2-Klausel-Protokoll verwendet. Es kann kostenlos ausprobiert und für kommerzielle Zwecke verwendet werden.
*** Die Konfigurationsdatei ist sehr einfach**
Netzwerke und Programme sind auch für nicht engagierte Systemadministratoren leicht verständlich.
*** Umschreiben unterstützen**
Kann HTTP-Anfragen entsprechend unterschiedlicher Domänennamen und URLs in verschiedene Backend-Servergruppen aufteilen.
***Integrierter Gesundheitscheck**
Wenn ein Webserver hinter NginxProxy ausfällt, hat dies keine Auswirkungen auf den Front-End-Zugriff.
*** BANDBREITE SPAREN **
Unterstützt GZIP-Komprimierung und kann Header für den lokalen Browser-Cache hinzufügen.
*** Hohe Stabilität**
Bei Verwendung als Reverse-Proxy ist die Wahrscheinlichkeit von Ausfallzeiten minimal.
* **Unterstützt Hot-Deployment**
Nginx unterstützt Hot Deployment, das sich besonders einfach automatisieren lässt und fast 24 Stunden am Tag, 7 Tage die Woche laufen kann. Selbst wenn es mehrere Monate läuft, muss es nicht neu gestartet werden. Die Softwareversion kann auch aktualisiert werden, ohne den Dienst zu unterbrechen.

Die folgende Abbildung ist ein Leistungsvergleich von Nginx, Apache und lighttpd:

Oben wurde bereits so viel über die leistungsstarke Leistung von Nginx gesagt. Wie erstellt man also einen Nginx-Website-Server basierend auf CentOS 7 (einschließlich der Konfiguration eines virtuellen Webhosts)? Lassen Sie uns die Konfiguration von Nginx und seine Anwendung auf virtuellen Maschinen weiter erläutern:

2. Vorbereitung:

1. Ein CentOS 7-Server;

2. Eine CentOS 7-Systemfestplatte;

3. Das benötigte Softwarepaket finden Sie unter https://www.jb51.net/softs/25646.html

4. Sie können es auch von der offiziellen Website http://www.nginx.org/ herunterladen

3. Beginnen Sie mit dem Aufbau der Nginx-Website (mounten Sie die Systemfestplatte und installieren Sie die erforderlichen Abhängigkeitspakete):

1. Installieren Sie die erforderlichen Abhängigkeitspakete, die alle auf der Systemfestplatte bereitgestellt werden:


2. Kompilieren, installieren und konfigurieren Sie Nginx

[root@localhost media]# useradd -M -s /sbin/nologin nginx #Systembenutzer erstellen [root@localhost media]# tar zxf nginx-1.12.0.tar.gz -C /usr/src #Entpacken [root@localhost media]# cd /usr/src/nginx-1.12.0/
[root@localhost nginx-1.12.0]# ./configure --prefix=/usr/local/nginx 
--user=nginx --group=nginx --with-http_stub_status_module 
&& machen && machen installieren       
#Nginx kompilieren und installieren
[root@localhost ~]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
#Erstellen Sie eine Linkdatei für das Hauptprogramm. Um das Starten, Stoppen, Neuladen und andere Vorgänge des Nginx-Dienstes komfortabler zu gestalten, können Sie das Nginx-Dienstskript bearbeiten. Das Skript wird wie folgt kompiliert:
[root@localhost ~]# vim /etc/init.d/nginx #Serviceskript bearbeiten#!/bin/bash
# chkconfig: -99 20
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
Fall "$1" in
 Start)
    $PROG
 ;;
 stoppen)
    töten -s BEENDEN $(Katze $PIDF)
 ;;
 Neustart)
    $0 Stopp
    $0 Start
 ;;
 neu laden
    töten -s HUP $(Katze $PIDF)
 ;;
 *)
    echo "USAGE:$0 {start | stop | neu starten | neu laden}"
    Ausfahrt 1
esac
Ausfahrt 0

[root@localhost ~]# chmod +x /etc/init.d/nginx #Ausführungsberechtigung hinzufügen[root@localhost ~]# chkconfig --add nginx #Als Systemdienst hinzufügen[root@localhost ~]# systemctl start nginx #Starten Sie den Nginx-Dienst, um die normale Ausführung des Skripts zu bestätigen[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf #Passen Sie die Konfigurationsdatei an, um den Webdienst zu optimieren..............
worker_processes 2; #Anzahl der Arbeitsprozesse #error_log logs/error.log; #Speicherort der Fehlerprotokolldatei #error_log logs/error.log Hinweis;
#error_log Protokolle/error.log-Info;
#pid logs/nginx.pid; #PID-Dateispeicherortereignisse {
  use epoll; #Fügen Sie diese Zeile sogar in { } hinzu, um die Leistung zu verbessern worker_connections 4096; Jeder Prozess verarbeitet 4096 Verbindungen}

Die oben genannten Optimierungen werden basierend auf der globalen Konfiguration implementiert. Die Bedeutung der einzelnen Optimierungen ist wie folgt:

  • worker_processes: Gibt die Anzahl der Arbeitsprozesse an. Wenn der Server über mehrere CPUs verfügt oder einen Mehrkernprozessor verwendet, können Sie die Anzahl der Arbeitsprozesse basierend auf der Gesamtzahl der CPU-Kerne angeben. Die spezifische Bedeutung wird im Konfigurationselement worker_connections wiedergegeben.
  • worker_connections: Dieses Konfigurationselement gibt die Anzahl der von jedem Prozess verarbeiteten Verbindungen an, die im Allgemeinen unter 10.000 liegt (der Standardwert ist 1024). Es ist mit dem Konfigurationselement für die Anzahl der oben genannten Arbeitsprozesse verknüpft. Wenn beispielsweise die Anzahl der Arbeitsprozesse 8 beträgt und jeder Prozess 4.096 Verbindungen verarbeitet, übersteigt die Anzahl der Verbindungen, über die Nginx Dienste bereitstellen darf, normalerweise 30.000 (4096*8=32.768). Natürlich hängt die konkrete Leistung auch von der Serverhardware, der Netzwerkbandbreite und weiteren physikalischen Bedingungen ab.

3. Erstellen Sie einen virtuellen Webhost basierend auf dem Domänennamen:

1. HTTP-Konfiguration:

Die Konfigurationsdatei von Nginx verwendet das Trennzeichen-Tag „http { }“, um den HTTP-Server festzulegen, einschließlich Zugriffsprotokollen, HTTP-Ports, Webverzeichnis, Standardzeichensatz, Verbindungspersistenz, virtuellen Webhosts, PHP-Parsing und anderen globalen Website-Einstellungen, von denen die meisten im untergeordneten Trennzeichen-Tag „server { }“ enthalten sind. „Server {}“ steht für eine bestimmte Website-Einstellung.

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf 
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"';
#Entfernen Sie das Zeichen "#" am Anfang der obigen drei Zeilen access_log logs/access.log main; #Speicherort des Zugriffsprotokolls sendfile on; Aktivieren Sie den effizienten Dateiübertragungsmodus #tcp_nopush on;

  #keepalive_timeout 0;
  keepalive_timeout 65; #Verbindungs-Keep-Alive-Timeout #gzip ein;

  Server {
    listen 80; #Abhörport des Webservers, Sie können das Format „IP-Adresse:Port“ verwenden Servername www.test1.com; #Domänenname der Website Zeichensatz UTF-8; #Standardzeichensatz der Website, Sie müssen das führende „#“-Zeichen entfernen access_log logs/test1.access.log main; #Name der Zugriffsprotokolldatei location /status { #Fügen Sie location /status hinzu, um Statusstatistiken zu aktivieren, der Zugriffsort ist /status
      stub_status on; #Statusstatistikfunktion aktivieren access_log off; #Protokollierung für diesen Standort deaktivieren}

    Standort / {
      root /var/www/test1; #Stammverzeichnis der Website index index.html index.php; #Standard-Homepage, ändern Sie zu index.php, um PHP-Webseiten zu unterstützen}

    ;
        ..........................

    error_page 500 502 503 504 /50x.html; #Interne Fehler-Feedbackseite location = /50x.html { #Fehlerseitenkonfiguration root html;
    }
    }
 }

Die obige Konfiguration erstellt nur einen Website-Dienst. Wenn Sie mehrere ausführen möchten, können Sie die am Ende der Konfigurationsdatei bereitgestellte Vorlage kopieren und in die Konfiguration „server{ }“ einfügen. Da die Konfigurationsdatei zu viele „{ }“ enthält, müssen Sie sie zur Vermeidung von Fehlern wie folgt in den ursprünglichen „server{ }“ kopieren:

Server {
hören Sie 80;
    Servername www.test2.com;
    Zeichensatz UTF-8;

    access_log Protokolle/test2.access.log Haupt;
     Standort /Status {
      stub_status ein;
      Zugriff_Abmeldung;
}

    Standort / { 
      Wurzel /var/www/test2;
      Index Index.html Index.php;
    }
  }

  Server {
    hören Sie 80;
    Servername www.test1.com;

        ..................................

An diesem Punkt wurde der virtuelle Host eingerichtet und der Dienst muss neu gestartet werden, damit er wirksam wird und der normale Betrieb des Webservers überprüft werden kann (DNS muss von Ihnen selbst eingerichtet werden).

4. Zugriffsstatusstatistiken Virtuelle Hostanwendung

[root@localhost ~]# nginx -t #Verwenden Sie diesen Befehl, um die Konfigurationsdatei zu überprüfen, bevor Sie den Dienst neu starten.
#Wenn die Konfigurationsdatei einen Fehler enthält, wird die Zeile angezeigt, in der der Fehler auftritt.
#Wenn alles richtig ist, wird OK angezeigt. Wenn ein Fehler auftritt, wird beim Neustart des Dienstes kein Fehler gemeldet, aber die Konfigurationsdatei wird nicht wirksam.
nginx: [emerg] unerwartetes ";" in /usr/local/nginx/conf/nginx.conf:44
#Zeigt an, dass in Zeile 44 ein Fehler vorliegt nginx: Test der Konfigurationsdatei /usr/local/nginx/conf/nginx.conf fehlgeschlagen
[root@localhost ~]# nginx -t #Das Folgende zeigt „ok“ an, was darauf hinweist, dass kein Problem vorliegt.
nginx: die Syntax der Konfigurationsdatei /usr/local/nginx/conf/nginx.conf ist in Ordnung
nginx: Test der Konfigurationsdatei /usr/local/nginx/conf/nginx.conf ist erfolgreich

# Bereiten Sie als Nächstes das Website-Verzeichnis und die Testdateien vor, erstellen Sie Stammverzeichnisse für die beiden virtuellen Webhosts und bereiten Sie die Test-Homepage vor, um die Unterscheidung während des Tests zu erleichtern [root@localhost named]# mkdir -p /var/www/test1
[root@localhost benannt]# mkdir -p /var/www/test2
[root@localhost benannt]# echo "www.test1.com" > /var/www/test1/index.html
[root@localhost benannt]# echo "www.test2.com" > /var/www/test2/index.html

Client-Authentifizierung:

① Besuchen Sie die Homepage von www.test1.com:


② Besuchen Sie die Statusstatistikseite von www.test1.com:


Das Obige bedeutet Folgendes:

Aktive Verbindungen bedeutet, dass die aktuelle Anzahl aktiver Verbindungen 2 beträgt;

Server akzeptiert verarbeitete Anfragen zeigt die verarbeiteten Verbindungsinformationen an. Die drei Zahlen stehen für 3 verarbeitete Verbindungen, 3 erfolgreiche Handshakes und 6 verarbeitete Anfragen.

① Besuchen Sie die Homepage von www.test2.com:


② Besuchen Sie die Statusstatistikseite von www.test2.com:

Das Obige ist die Anwendung von Zugriffsstatusstatistiken und virtuellen Hosts

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Detailliertes Tutorial zum Erstellen eines Gitlab-Servers auf CentOS8.1
  • Implementierungsschritte zum Erstellen eines lokalen Webservers auf Centos8
  • So erstellen Sie einen MySQL-Master-Slave-Server auf CentOS7 (grafisches Tutorial)
  • CentOS 7.2 erstellt einen Nginx-Webserver zum Bereitstellen des Uniapp-Projekts
  • Detaillierte Erklärung zum Erstellen einer Phalcon-Umgebung unter einem Nginx-Server auf einem CentOS7-System
  • Tutorial zum Erstellen eines Master-Slave-DNS-Servers in Centos7
  • Installieren und erstellen Sie eine Serverumgebung aus PHP+Apache+MySQL auf CentOS
  • Ein kurzes Tutorial zum Einrichten einer PHP-Serverumgebung auf CentOS
  • Centos erstellt ein Prozessdiagramm für den Chrony-Zeitsynchronisationsserver

<<:  Zusammenfassung der Tipps zum Festlegen der maximalen Anzahl von Verbindungen in MySQL

>>:  React+Amap ermittelt Breiten- und Längengrad in Echtzeit und lokalisiert die Adresse

Artikel empfehlen

Docker-Netzwerkprinzipien und detaillierte Analyse benutzerdefinierter Netzwerke

Docker virtualisiert eine Brücke auf dem Host-Rec...

Docker ermöglicht mehrere Port-Mapping-Befehle

wie folgt: docker run -d -p 5000:23 -p 5001:22 --...

Lösung für den Fehler beim Aufruf von Yum im Docker-Container

Beim Ausführen von yum im Dockerfile oder im Cont...

Docker Compose-Installationsmethoden in verschiedenen Umgebungen

1. Online-Installation Derzeit habe ich nur die O...

So installieren Sie eine MySQL-Datenbank im Deepin 2014-System

Deepin 2014 herunterladen und installieren Zum He...

Muss MySql ein Commit durchführen?

Ob MySQL bei der Ausführung von Vorgängen wie Ein...

Optimierte Aufzeichnung der Verwendung von IN-Datenvolumen in Mysql

Die MySQL-Versionsnummer ist 5.7.28. Tabelle A ha...

So stellen Sie MySQL- und Redis-Dienste mit Docker bereit

Inhaltsverzeichnis So stellen Sie den MySQL-Diens...

MySQL-Datenbank Daten laden, vielfältige Verwendungsmöglichkeiten

Inhaltsverzeichnis Vielfältige Einsatzmöglichkeit...

So verwenden Sie den regulären Matching-Selektor für CSS-Attributwerte (Tipps)

Es gibt drei Typen von regulären Matching-Selekto...