Detaillierte Erklärung zum Erstellen eines CDN-Servers mit Nginx (Bild und Text)

Detaillierte Erklärung zum Erstellen eines CDN-Servers mit Nginx (Bild und Text)

Verwenden des Proxy-Cache von Nginx zum Erstellen eines Cache-Servers 1: Kompilieren Sie ngx_cache_purge

1. Der Proxy_cache von Nginx speichert den Cache basierend auf dem MD5-Hash des Schlüsselwerts und unterstützt jeden Schlüssel. Sie können beispielsweise „Domänenname, URI, Parameter“ zu einem Schlüssel kombinieren. Es werden auch Statuscodes unterstützt, die nicht 200 sind, wie z. B. 404/302 usw.

2. Um den Proxy_cache von Nginx zu verwenden, müssen Sie das Modul ngx_cache_purge in Nginx kompilieren. Führen Sie nginx -V aus, um zu prüfen, ob das Wort ngx_cache_purge vorhanden ist. Wenn nicht, müssen Sie es manuell kompilieren.
Manuelle Kompilierung von Nginx CDN


3. Hier verwenden wir Oneinstack, um das Modul ngx_cache_purge als Demonstration zu kompilieren. Wenn Sie andere LNMP-Pakete verwenden, können Sie auf diese verweisen. Der grundlegende Prozess ist ähnlich. Der Befehl lautet wie folgt:

cd /root/oneinstack/src #Geben Sie das Installationspaketverzeichnis ein nginx -V
tar xzf nginx-1.10.3.tar.gz #Wählen Sie das Dekomprimierungspaket entsprechend der oben überprüften Nginx-Version aus wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz
tar zxvf ngx_cache_purge-2.3.tar.gz
cd /root/oneinstack/src/nginx-1.10.3

# Für die Parameter, die unten nach ./configure hinzugefügt werden, können Sie die gerade von nginx -V erhaltenen Parameter direkt kopieren und dann am Ende –add-module=../ngx_cache_purge-2.3 als Referenz hinzufügen:
./konfigurieren –prefix=/usr/local/nginx –user=www –group=www –mit-http_stub_status_module –mit-http_v2_module –mit-http_ssl_module –mit-http_gzip_static_module –mit-http_realip_module –mit-http_flv_module –mit-http_mp4_module –mit-openssl=../openssl-1.0.2k –mit-pcre=../pcre-8.39 –mit-pcre-jit –mit-ld-opt=-ljemalloc –add-module=../ngx_cache_purge-2.3

machen

mv /usr/local/nginx/sbin/nginx{,$(date +%m%d)}
cp objs/nginx /usr/local/nginx/sbin #oneinstack, andere Operationen benötigen diese Operation nicht nginx -t
Dienst Nginx neu starten

4. Nachdem die Installation abgeschlossen ist, führen Sie nginx -V erneut aus und Sie werden sehen, dass Nginx erfolgreich in ngx_cache_purge kompiliert wurde.

2. Verwenden Sie den Proxy-Cache von Nginx, um einen Cache-Server zu erstellen. 2: Ändern Sie die Nginx-Konfigurationsdatei

1. Suchen Sie zuerst Ihre Nginx-Konfigurationsdatei: nginx.conf (der Pfad ist normalerweise /usr/local/nginx/conf/nginx.conf) und fügen Sie der Konfigurationsdatei Http den folgenden Code hinzu: (Beachten Sie, dass der Pfad in Ihren eigenen Pfad geändert werden sollte)

Proxy_Verbindungstimeout 5;
Proxy_Lese_Timeout 60;
Proxy_Sendezeitüberschreitung 5;
Proxy-Puffergröße 16k;
Proxy-Puffer 4 64k;
Proxy_Busy_Buffer_Größe 128k;
Proxy_Temp_File_Schreibgröße 128k;
Proxy-Cache-Pfad /data/wwwroot/pic.freehao123.com Ebenen=1:2 Schlüsselzone=Cache_eine:200 m inaktiv=30 d max. Größe=5 g;
Proxy_temp_Pfad /data/wwwroot/pic.freehao123.com/temp;

2. Die Vorgehensweise ist wie folgt:

3. Fügen Sie dann in der Datei nginx.conf Ihres virtuellen Hosts (der Pfad lautet normalerweise /usr/local/nginx/conf/vhost/pic.freehao123.com.conf) die folgenden Befehle zu „server listen 80“ und „server listen 443 ssl http2“ hinzu:

Standort /{
Proxy-Passwort https://www.freehao123.com;
Proxy_Redirect aus;
Proxy_set_header Host www.freehao123.com;
Proxy-Cache Cache_eins;
Proxy_Cache_gültig 200 302 304 365d;
Proxy_Cache_gültig 301 1d;
proxy_cache_valid beliebig 1m;
add_header Bilder-Cache "$upstream_cache_status von $host";
add_header Pragma öffentlich;
add_header Cache-Control "öffentlich, muss erneut validiert werden, Proxy-Erneutvalidierung";
access_log aus; log_not_found aus; läuft max. ab;
}

4. Speichern Sie die Konfigurationsdatei, laden Sie sie erneut hoch und führen Sie dann Folgendes aus:

nginx -t
Dienst Nginx neu starten

5. Überprüfen Sie zunächst, ob die Nginx-Konfiguration korrekt ist. Wenn kein Problem vorliegt, starten Sie Nginx neu.

6. Wenn Sie den Gravatar-Avatar zwischenspeichern möchten, lautet der Code:

Standort /Avatar{
Proxy-Passwort http://cn.gravatar.com;
Proxy_Redirect aus;
Proxy_set_header Host cn.gravatar.com;
Proxy-Cache Cache_eins;
Proxy_Cache_gültig 200 302 304 365d;
Proxy_Cache_gültig 301 1d;
proxy_cache_valid beliebig 1m;
add_header Bilder-Cache "$upstream_cache_status von $host";
add_header Pragma öffentlich;
add_header Cache-Control "öffentlich, muss erneut validiert werden, Proxy-Erneutvalidierung";
access_log aus; log_not_found aus; läuft max. ab;
}

7. Öffnen Sie nun Ihren Second-Level-Domänennamen: pic.freehao123.com, und Sie sehen, dass das Bild korrekt zwischengespeichert wurde.

8. Hier ist ein weiterer Nginx-Cache-Code, der den gleichen Effekt wie oben hat.

#Schreiben Sie zuerst den folgenden Befehl in die Nginx-Konfiguration:
Proxy_Temp_File_Schreibgröße 128k;
Proxy_temp_Pfad /data/wwwroot/pic.ucblog.net/temp;
Proxy-Cache-Pfad /data/wwwroot/pic.ucblog.net Ebenen=1:2 Schlüsselzone=Cache_eine:500 m inaktiv=7 d max. Größe=5 g;

#Schreiben Sie dann den folgenden Befehl in die Nginx-Konfiguration des virtuellen Hosts:
Fügen Sie zunächst Folgendes hinzu, bevor der Server die Codes 80 und 443 abhört:
Upstream-Gravatar {
Server sicher.gravatar.com:443;
}
#Fügen Sie den Server-Listen 80 und 443 Folgendes hinzu:
Standort / {
Proxy_Pass_Header-Server;
Proxy_set_header Host cn.gravatar.com;
proxy_set_header Accept-Kodierung ";
Proxy_Redirect aus;
Proxy_Set_Header X-Real-IP $Remote_Addr;
proxy_set_header X-Schema $scheme;
Proxy-Passwort https://gravatar;
Proxy-Cache Cache_eins;
Proxy_Cache_gültig 200 304 365d;
Proxy-Cache-Schlüssel $host$uri$ist_args$args;
läuft maximal ab;
}

9. Auf dem VPS-Host können Sie die von Proxy_Cache generierte Hash-Datei sehen, was bedeutet, dass das Caching erfolgreich war.

3. Verwenden Sie den Proxy_Store von Nginx, um einen Spiegelserver zu erstellen: Ändern Sie die Nginx-Konfigurationsmethode

1. Die Funktion des Proxy_Stores von Nginx besteht darin, statische Dateien direkt auf der lokalen Festplatte zu erstellen und zu lesen. Dies ähnelt der Spiegel-CDN-Funktion von Qiniu oder Youpai. Die statischen Bilder und andere Dateien der Quellsite werden beim ersten Besuch automatisch abgerufen. Nachfolgende Besuche werden direkt vom CDN-Server gelesen, was den Vorgang beschleunigt.

2. Ändern Sie direkt die Konfigurationsdatei des virtuellen Nginx-Hosts (hier wird img.freehao123.com.conf als Demonstration verwendet) und fügen Sie den folgenden Code hinzu:

Standort / {
läuft in 3 Tagen ab;
proxy_set_header Accept-Kodierung ";
Stammverzeichnis /data/wwwroot/img.freehao123.com;
Proxy_Store ein;
proxy_store_access Benutzer:rw Gruppe:rw alle:rw;
Proxy_temp_Pfad /data/wwwroot/img.freehao123.com/temp;
wenn ( !-e $request_filename ) {
Proxy-Passwort https://www.freehao123.com;
}
}

3. Speichern Sie den Konfigurations-Upload erneut und starten Sie Nginx anschließend neu. Sie können sehen, dass die von img.freehao123.com angeforderten statischen Dateien, wie z. B. Bilder, erfolgreich von der Quellsite abgerufen wurden.

4. Im Speicherverzeichnis auf dem VPS-Host können Sie auch sehen, dass proxy_store das Verzeichnis statischer Dateien wie Bilder vollständig gespeichert hat, was einem Spiegelspeicher-CDN einer Website entspricht.

5. Hier ist eine andere Verwendung. Der Effekt ist der gleiche wie oben. Denken Sie daran, den Pfad zu ersetzen. Der Code lautet wie folgt:

Upstream http_tornado {
Server www.freehao123.com:443;
}

Server {
#Anderen Konfigurationsort weglassen ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|html|htm|css)$ {
Stammverzeichnis /opt/data/product/blog/cache;
Proxy_Store ein;
proxy_store_access Benutzer:rw Gruppe:rw alle:rw;
Proxy_temp_Pfad /opt/data/product/blog/cache;
wenn ( !-e $request_filename ) {
Proxy-Passwort http://http_tornado;
}
}
}

4. Was ist der Unterschied zwischen Proxy_Store und Proxy_Cache von Nginx?

1. Der Unterschied zwischen Spiegelung und Zwischenspeicherung. Aus der obigen Einführung können wir auch erkennen, dass proxy_store dem Spiegeln einer Website entspricht. Der zweite Zugriff auf statische Dateien wie Bilder wird direkt vom CDN-Server gelesen, was die Belastung der Quellsite erheblich reduziert. Proxy_cache entspricht dem Caching, d. h. dem Generieren eines Schlüssels für die Anfrage, sodass der zweite Zugriff schneller erfolgen kann.


2. proxy_store ist für statisch geeignet, proxy_cache ist für dynamisch geeignet. Proxy_store speichert das gesamte Bild auf dem CDN-Server und eignet sich daher besser für die Bild-CDN-Beschleunigung, während Proxy_cache den Schlüssel für den Cache generiert, der besser für die dynamische Website-Beschleunigung geeignet ist und zum Lastenausgleich verwendet werden kann, um die Belastung des Servers zu verringern.

5. Was ist nach der Einrichtung eines Mirror-CDN-Servers zu tun?

1. Erstens: Beim Erstellen eines gespiegelten CDN-Servers werden die Dateien und URLs der Quellsite vollständig kopiert. Um zu vermeiden, dass Suchmaschinen die Site fälschlicherweise für eine plagiierte Duplikatsite halten, können wir der CDN-Site Robots.txt hinzufügen, um zu verhindern, dass Suchmaschinen sie einbinden. Der Befehl lautet wie folgt (Bilder dürfen eingebunden werden, andere dürfen jedoch nicht gecrawlt werden):

Benutzeragent: Baiduspider
Erlauben: /wp-content/uploads/*.jpg$
Erlauben: /wp-content/uploads/*.png$
Erlauben: /wp-content/uploads/*.gif$
Nicht zulassen: /

Benutzeragent: 360Spider
Erlauben: /wp-content/uploads/*.jpg$
Erlauben: /wp-content/uploads/*.png$
Erlauben: /wp-content/uploads/*.gif$
Nicht zulassen: /

Benutzeragent: Baiduspider-image
Erlauben: /wp-content/uploads/*.jpg$
Erlauben: /wp-content/uploads/*.png$
Erlauben: /wp-content/uploads/*.gif$
Nicht zulassen: /

Benutzeragent: 360Spider-Image
Erlauben: /wp-content/uploads/*.jpg$
Erlauben: /wp-content/uploads/*.png$
Erlauben: /wp-content/uploads/*.gif$
Nicht zulassen: /

Benutzeragent: Sosospider
Erlauben: /wp-content/uploads/*.jpg$
Erlauben: /wp-content/uploads/*.png$
Erlauben: /wp-content/uploads/*.gif$
Nicht zulassen: /

Benutzeragent: Sogou Spider
Erlauben: /wp-content/uploads/*.jpg$
Erlauben: /wp-content/uploads/*.png$
Erlauben: /wp-content/uploads/*.gif$
Nicht zulassen: /

Benutzeragent: YodaoBot
Erlauben: /wp-content/uploads/*.jpg$
Erlauben: /wp-content/uploads/*.png$
Erlauben: /wp-content/uploads/*.gif$
Nicht zulassen: /

Benutzeragent: Googlebot
Erlauben: /wp-content/uploads/*.jpg$
Erlauben: /wp-content/uploads/*.png$
Erlauben: /wp-content/uploads/*.gif$
Nicht zulassen: /

Benutzeragent: Bingbot
Erlauben: /wp-content/uploads/*.jpg$
Erlauben: /wp-content/uploads/*.png$
Erlauben: /wp-content/uploads/*.gif$
Nicht zulassen: /

Benutzeragent: Slurp
Erlauben: /wp-content/uploads/*.jpg$
Erlauben: /wp-content/uploads/*.png$
Erlauben: /wp-content/uploads/*.gif$
Nicht zulassen: /

Benutzeragent: MSNBot
Erlauben: /wp-content/uploads/*.jpg$
Erlauben: /wp-content/uploads/*.png$
Erlauben: /wp-content/uploads/*.gif$
Nicht zulassen: /

Benutzeragent: Googlebot-Bild
Erlauben: /wp-content/uploads/*.jpg$
Erlauben: /wp-content/uploads/*.png$
Erlauben: /wp-content/uploads/*.gif$
Nicht zulassen: /

Benutzeragent: Googlebot-Mobile
Erlauben: /wp-content/uploads/*.jpg$
Erlauben: /wp-content/uploads/*.png$
Erlauben: /wp-content/uploads/*.gif$
Nicht zulassen: /

Benutzeragent: yahoo-blogs/v3.9
Erlauben: /wp-content/uploads/*.jpg$
Erlauben: /wp-content/uploads/*.png$
Erlauben: /wp-content/uploads/*.gif$
Nicht zulassen: /

Benutzeragent: psbot
Erlauben: /wp-content/uploads/*.jpg$
Erlauben: /wp-content/uploads/*.png$
Erlauben: /wp-content/uploads/*.gif$
Nicht zulassen: /

Benutzeragent: *
Nicht zulassen: /

2. Zweitens: Führen Sie das Anti-Hotlinking von Nginx gründlich durch. Wenn der Datenverkehr auf Ihrem CDN-Server nicht ausreicht, empfiehlt es sich, Anti-Hotlink-Maßnahmen zu ergreifen, die Ihnen ebenfalls dabei helfen können, die Belastung des Servers zu verringern. Fügen Sie Ihrer virtuellen Host-Konfigurationsdatei den folgenden Code hinzu:

Standort ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
valid_referers, keine blockiert, freehao123.com *.freehao123.com *.google.cn *.google.com *.google.com.hk image.baidu.com *.baidu.com;
wenn ($ungültiger_Referrer) {
umschreiben ^/ https://www.freehao123.com;
#Rückgabe 403;
}
}

3. Drittens: Legen Sie das Nginx-Standardimage fest. Dies dient hauptsächlich zum Zwischenspeichern von Gravatar-Avataren. Wenn ein bestimmtes Bild oder eine bestimmte Datei auf dem Quellserver nicht vorhanden ist, können wir ein Standardbild oder einen Standardlink für Nginx festlegen, damit der Cache perfekt aussieht.

Standort /Avatar {

Versuchen Sie, Dateien $uri /avatar/set-avatar.png auszuführen.

}

#Oder verwenden Sie:
Standort /{

versuche_Dateien $uri /set-avatar.png;

}

4. Der Effekt ist in der folgenden Abbildung dargestellt:

Dies ist das Ende dieses Artikels zur Verwendung von Nginx zum Erstellen eines CDN-Servers (mit Bildern und Text). Weitere Informationen zur Verwendung von Nginx zum Erstellen eines CDN-Servers finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • So verwenden Sie Umgebungsvariablen in der Nginx-Konfigurationsdatei
  • So implementieren Sie eine verteilte Strombegrenzung mit Nginx
  • So stellen Sie statische Seiten mit Nginx bereit
  • So verwenden Sie den Nginx-Proxy zum Surfen im Internet
  • Details zur Verwendung des Nginx-Arbeitsmodus und der Proxy-Konfiguration

<<:  Zusammenfassung der für MySQL erforderlichen allgemeinen Kenntnisse

>>:  Beispiele für Vorschaufunktionen für verschiedene Dateitypen in vue3

Artikel empfehlen

Erfahrung im Webdesign

<br />Der Autor war früher ein Anfänger im W...

So stellen Sie Tencent Cloud Server von Grund auf bereit

Da dies mein erster Beitrag ist, weisen Sie mich ...

Umfassende Erklärung zu dynamischem SQL von MyBatis

Inhaltsverzeichnis Vorwort Dynamisches SQL 1. Sch...

Praktisches Beispiel einer virtuellen Vue-Liste

Inhaltsverzeichnis Vorwort Design erreichen Zusam...

So integrieren Sie Bilder eleganter in Vue-Seiten

Inhaltsverzeichnis Fehlerdemonstration Durch bere...

XHTML-Tutorial für die ersten Schritte: XHTML-Webseiten-Bildanwendung

<br />Das sinnvolle Hinzufügen von Bildern k...

Zusammenfassung zweier Methoden zum Implementieren der Vue-Druckfunktion

Methode 1: Installieren Sie das Plugin über npm 1...

JS realisiert den Effekt des Bildwasserfallflusses

In diesem Artikel wird der spezifische JS-Code zu...

Codebeispiel für das Nutzungsszenario der Nginx-Domänenweiterleitung

Szenario 1: Aufgrund von Serverbeschränkungen ist...

Realisierung der Echtzeit-Dateisynchronisierung zwischen Linux-Servern

Anwendungsszenarien Bei vorhandenen Servern A und...

Vue + Express + Socket realisiert Chat-Funktion

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

Vue implementiert das Senden von Emoticons im Chatfenster

Der spezifische Code zum Senden von Emoticons im ...

So verwenden Sie Navicat zum Exportieren und Importieren einer MySQL-Datenbank

MySql ist eine Datenquelle, die wir häufig verwen...