Nginx Reverse Proxy- und Load Balancing-Konfiguration

Serverplattform CentOS 6

Ladeplanung: 192.168.137.16 Nginx-1.5.2

Server 1: 192.168.137.17 Nginx integriert php

server2: 192.168.137.18 Nginx integriert php

MySQL-Proxy: 192.168.137.26 MySQL-Proxy

mysqlmaster: 192.168.137.27 mysqlmaster

mysqlslave1: 192.168.137.28 mysqlslave1

mysqlslave2: 192.168.137.29 mysqlslave2

WIN7-Client 192.168.137.1 IE-Kernel-Browser

Umsetzungsprozess: Kunde stellt eine Anfrage,Es wird auf die IP des Lastplanungsservers aufgelöst,Der Scheduling-Server leitet die Anfrage weiter an

Mitgliedsserver server1 oder server2, Der Mitgliedsserver verarbeitet die Anfrage,Durch direktes Finden statischer Daten oder Abfragen des mysql-Master-Slave des Backends

Cluster,Geben Sie das Ergebnis an den Lastplanungsserver zurück,Abschließend erhält der Client das Ergebnis vom Load-Dispatch-Server。

1. Laden Sie die Scheduling-Serverinstallation nginx-1.5.2

(1) Führen Sie rpm -qa aus, um gcc zu überprüfen , gcc-c ++ ,machen ,Ob libtool etc. installiert sind,Wenn nicht, verwenden Sie zur Installation bitte den Befehl rpm oder yum。

(2) Installieren Sie die openssl-Bibliothek

tar zxvf openssl-1.0.1c.tar.gz

./konfigurieren (Es müssen keine benutzerdefinierten Parameter hinzugefügt werden)

machen && make install

(3) PCRE installieren

tar -zxvf pcre-8.34.tar.gz

./konfigurieren –Präfix = / usr / local / pcre

machen && make install

(4) Installieren Sie die neueste Bibliotheksdatei von zlib

tar zxvf zlib-1.2.8.tar.gz

./konfigurieren –Präfix = / usr / local / zlib

machen && make install

(5) Installieren Sie nginx-1.5.2

groupadd -r nginx

useradd -r -g nginx -s /bin/false -M nginx

nginx Konfigurationsparameter

./konfigurieren –Präfix = / usr / local / nginx \

–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 \

–Gruppe=nginx \

–with-http_ssl_module \

–with-http_stub_status_module \

–http-proxy-temp-path = / var / tmp / nginx / proxy \

–http-fastcgi-temp-path=/var/tmp/nginx/fcgi \

–mit-pcre

Kompilieren und installieren

machen && make install

nginx starten

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

Browsereingabe http://localhost gibt die nginx-Seite erfolgreich zurück。

nginx1

(6) nginx-Konfiguration

vim /usr/local/nginx/conf/nginx.conf

unter dem http-Modul,Fügen Sie den stromaufwärts gelegenen Teil hinzu,Wählen Sie den geeigneten Algorithmus entsprechend Ihren Anforderungen,Wenn die Leistung der Mitgliedsserver stark variiert,

Sie können das entsprechende Gewicht (Gewicht) einstellen, Mitglieder mit höherem Gewicht,Je größer die Wahrscheinlichkeit, die Anfrage zu erhalten。

stromaufwärts 192.168.137.16 {

ip_hash;

Server 192.168.137.17:80;

Server 192.168.137.18:80;

}

Ort / Abschnitt ändern,Dieser Teil zeigt die Annahme jeder Anfrage an,Leiten Sie jetzt einfach die empfangene Anfrage an http weiter://192.168.137.16,

Upstream wird nach einem bestimmten Ausgleichsalgorithmus server1 und server2 zugewiesen。

wie folgt:

Ort / {

# Root-HTML;

# index index.html index.htm;

Proxy_pass http://192.168.137.16;

proxy_set_header Host $host;

Proxy_Set_Header X-Real-IP $remote_addr;

Proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

Abschließend speichern und beenden,nginx neu starten,Der Lastplanungsserver ist konfiguriert。

2. Mitgliedsserver server1 und server2 Konfiguration

Da Mitgliedsserver tatsächlich die Anforderungsverarbeitung durchführen,Geben Sie entweder statische Abfrageergebnisse direkt zurück,Verbinden Sie sich entweder über PHP mit mysql und geben Sie das Ergebnis dynamisch zurück,

Daher müssen Mitgliedsserver nginx installieren und php integrieren ,mysql kann auf demselben Server installiert werden,Kann auch auf anderen Servern installiert werden。Hier

Wählen Sie die Bereitstellung von drei zusätzlichen MySQL-Servern aus,Und konfigurieren Sie die Master-Slave-Synchronisation,Realisieren Sie eine Lese-Schreib-Trennung。Bieten Sie starke Unterstützung für hohen gleichzeitigen Zugriff。

Die Konfiguration von Server1 und Server2 kann sich auf die LNMP-Umgebungskonstruktion dieser Site beziehen

Stellen Sie LNMP bereit

Nach erfolgreicher Installation von LNMP,Öffnen Sie die Ports 80 und 3306。nginx.conf bearbeiten ,Ändern Sie den Domänennamen in www.roamway.com

Die Konfigurationsdatei ist wie folgt:

Benutzer nginx nginx;

worker_processes auto;

error_log /var/log/nginx_error.log ;

pid /usr/local/nginx/logs/nginx.pid;

#Gibt den Wert für maximale Dateideskriptoren an, die von diesem Prozess geöffnet werden können.

worker_rlimit_nofile 5120;

Veranstaltungen

{

epol verwenden;

worker_connections 5120;

multi_accept ein;

}

http

{

include mime.types;

default_type application/octet-stream;

server_names_hash_bucket_size 128;

client_header_buffer_size 32k;

large_client_header_buffers 4 32k;

client_max_body_size 50m;

sendfile on;

tcp_nopush ein;

keepalive_timeout 60;

tcp_nodelay on;

fastcgi_connect_timeout 300;

fastcgi_send_timeout 300;

fastcgi_read_timeout 300;

fastcgi_buffer_size 64k;

fastcgi_buffers 4 64k;

fastcgi_busy_buffers_size 128k;

fastcgi_temp_file_write_size 256k;

gzip an;

#limit_conn_zone $binary_remote_addr zone=perip:10m;

##Wenn Sie limit_conn_zone aktivieren,hinzufügen “limit_conn perip 10;” zum Serverbereich.

server_tokens aus;

#Protokollformat

log_format Zugriff ‘$remote_addr – $remote_user [$time_local] “$Anfrage” ‘

‘$status $body_bytes_gesendet “$http_referer” ‘

‘”$http_user_agent” $http_x_forwarded_for’;

access_log aus;

Server

{

Hör mal zu 80;

Servername www.roamway.com;

index index.html index.htm index.php;

root /usr/local/nginx/html;

#Fehlerseite 404 /404.html;

binden Sie enable-php.conf ein;

Standort /nginx_status

{

stub_status an;

access_log aus;

}

Lage ~ .*\.(gif|jpg|JPEG|png|bmp|swf)$

{

läuft am 30d ab;

}

Lage ~ .*\.(js|CSS)?$

{

läuft 12h ab;

}

Lage ~ /\.

{

alles leugnen;

}

access_log /var/log/nginx/access.log-Zugriff;

}

include vhost / *. conf;

}

Erstellen Sie eine neue Datei phpinfo.php,Schreiben Sie den folgenden Code:

<?php

phpinfo();

?>

Der Browser gibt die

http://192.168.137.17/phpinfo.php, http://192.168.137.18/phpinfo.php

Sie können den PHP-Parsing-Effekt von server1 und server2 sehen。

3. Website importieren

Verwenden Sie einen FTP-Client,Laden Sie meine Website www.roamway.com und die lokale Datenbank herunter,wie folgt:

nginx4

Laden Sie es dann in das Webverzeichnis von server1 hoch,/usr/local/nginx/html

nginx5

Mit dem phpmyadmin-Tool,Erstellen Sie eine Roamway-Datenbank,Laden Sie dann roamway.sql hoch,Das Ergebnis ist wie folgt:

nginx6

Server2 und server1 funktionieren gleich,Nicht mehr, nicht länger。

4. Client-Tests

Der Windows-Client fügt die Auflösungsbeziehung zwischen dem Hauptserver 192.168.137.16 und www.roamway.com in der Hosts-Datei hinzu,

Natürlich können Sie auch den DNS-Server konfigurieren,Vorwärts- und Rückwärtsanalyse hinzufügen,Bitte beziehen Sie sich auf:https://www.roamway.com/?p=993

ping www.roamway.com, Erfolgreich aufgelöst zu 192.168.137.16

nginx7

Um zu überprüfen, ob der Lastausgleich wirklich erreicht wird,Erstellen Sie eine neue Homepage index.html im Website-Verzeichnis von server1 und server2

Schreiben Sie service1 hinein: 192.168.137.17oder Server2: 192.168.137.18 Speichern und schließen。

Browser-Test,Immer wieder aktualisieren,Die folgenden zwei Seiten erscheinen in einer Schleife。

nxin8

nginx9

Löschen Sie die Datei index.html im Webverzeichnis von server1 und server2。Browsertyp www.roamway.com

nginx11

Ende:Die obige Demonstration der Nginx-Load-Balancing-Konfiguration ist nur ein ungefährer Prozess,Die eigentliche Operation wird viel komplizierter sein。Es gab auch eine kleine Episode,

Plötzlicher Stromausfall während der MySQL-Kompilierung,Verursacht Datenverlust und viele unbekannte Ausfälle,mit Geduld,Konfiguration fortzusetzen。

Diese Konfiguration verwendet den Nginx-Reverse-Proxy,Cluster-basiert。MySQL-Master-Slave-Synchronisation und Lese-Schreib-Trennung,Wird demonstriert, wenn es die Zeit erlaubt。

beigefügt:Die neuesten Kompilierungsparameter

nginx-Version: nginx/1.15.3

gebaut von gcc 4.4.7 20120313 (roter Hut 4.4.7-4) (GCC)

gebaut mit OpenSSL 1.1.1-dev xx XXX xxxx

TLS SNI-Unterstützung aktiviert

Argumente konfigurieren: –Benutzer = www –Gruppe = www –Präfix = / usr / local / nginx \

–with-http_stub_status_module –with-http_ssl_module –with-http_v2_module \

–with-http_gzip_static_module –with-http_sub_module –with-http_realip_module \

–with-openssl=/usr/local/openssl/ –with-openssl-opt = ’enable-tls1_3 enable-schwach-ssl-chiffren’ \

–with-cc-opt = -DTCP_FASTOPEN = 23 –with-file-aio \

–http-client-body-temp-path = / var / tmp / nginx / client / \

–http-proxy-temp-path = / var / tmp / nginx / proxy \

–add-module=/usr/local/nginx-ct/ –add-module = / usr / local / nginx_upstream_check \

–without-mail_pop3_module –without-mail_imap_module –without-mail_smtp_module \

–without-http_uwsgi_module –ohne-http_scgi_module

Beispiel für ein nginx Upstream-Modul

upstream_modul

Hinterlasse eine Antwort