Obwohl der Blog jetzt auf dem CN2-VPS-Host von Alibaba Cloud Hong Kong platziert ist, verwendet Telecom die CN2-Leitung, sodass die Zugriffsgeschwindigkeit schneller ist (aber ich habe auch Rückmeldung von Freunden von Telecom erhalten, dass der Zugriff langsam ist (⊙﹏⊙)) . Allerdings haben China Unicom- und Mobilfunknutzer einen langsameren Zugang, insbesondere während der abendlichen Hauptverkehrszeit. Viele Freunde sagten, dass sie es überhaupt nicht öffnen können.

Der offiziellen Ankündigung zufolge ist Alibaba Cloud Hong Kong CN2 VPS tatsächlich auf Probleme mit China Unicom-Leitungen oder Telekommunikationsleitungsknoten gestoßen, was zu Zugangsproblemen zum gesamten Computerraum geführt hat. Natürlich wird Alibaba Cloud den „Topf“ natürlich den Betreibern überlassen. Vor einiger Zeit mussten Benutzer von China Unicom Japan oder andere Orte umgehen, um auf Alibaba Cloud Hong Kong VPS zuzugreifen.

Als ich von Kdatacenter Korea VPS zu Alibaba Cloud Hong Kong VPS wechselte, hatte ich erstens das Gefühl, dass Alibaba Cloud Hong Kong VPS tatsächlich günstig und attraktiv genug war, und zweitens hatte ich das Gefühl, dass die CN2-Linie gut sein könnte, zumindest viel schneller als die amerikanische Linie. Mit Ausnahme von Telekommunikationsnutzern scheint der Zugang jetzt reibungsloser zu sein, während Nutzer anderer Betreiber von Zeit zu Zeit Probleme haben werden.

Um dieses Problem zu lösen, wäre es naheliegend, das CDN für die Website zu beschleunigen. Natürlich können inländische VPS nicht ohne eine BA-Nummer verwendet werden. Daher habe ich eine koreanische VPS-Methode gefunden, die den Nginx-Reverse-Proxy verwendet, um die Zugriffsanfragen von China Mobile- und China Unicom-Benutzern an den CDN-Server zu übertragen, wodurch die Geschwindigkeit des Website-Zugriffs maximiert werden kann.

Selbst erstellte CDN-Beschleunigung – Nginx-Reverse-Bindung, Cache-Beschleunigung, automatischer Cache-Update und Erhalt einer echten IP

In diesem Artikel wird ausführlich erläutert, wie Sie ein CDN für die Website erstellen, um die entsprechenden Seiten und Dateien zu beschleunigen und zwischenzuspeichern. Verwenden Sie gleichzeitig ngx_cache_purge, um den Cache auf dem CDN-Server umgehend zu aktualisieren. Lösen Sie das Problem der Quellserver-Erfassung während der Nutzung. Das Problem der tatsächlichen IP des Benutzers. Zu den weiteren Tools zur CDN-Beschleunigung und Website-Erstellung gehören:

  1. Treten Sie dem Cloudflare-Partner bei, um den CloudFlare-CDN-Beschleunigungsdienst kostenlos bereitzustellen – es ist nicht erforderlich, NS für die Unterstützung von SSL anzupassen
  2. Verwenden Sie Fikker, um Ihr eigenes CDN zu erstellen – unterstützt HTTPS, Seiten-Caching, Echtzeitüberwachung, Verkehrsstatistiken und CC-Angriffsschutz
  3. Zwei hervorragende Tools zur Überwachung des Servernetzwerkverkehrs: Ntopng und Munin – leistungsstark und intuitiv

PS: Aktualisiert am 27. April 2018. Derzeit wird Youpaiyun CDN für Bilder und statische Dateien wie JS und CSS auf der Website verwendet. Übersichtsartikel: Youpaiyun CDN beschleunigte Anwendungs- und Nutzungsanleitung-1 Schlüsselspiegelung. statisches dynamisches CDN und kostenloses SSL.

PS: Aktualisiert am 6. März 2018, Wenn Sie kein CDN selbst erstellen möchten, können Sie einen CDN-Beschleunigungsdienst eines Drittanbieters ausprobieren. Der bekannte CloudFlare ist eine sehr gute Wahl: Zehn Dinge Möglicherweise kennen Sie den CloudFlare Free CDN-Beschleunigungstipp SSLDOSCache nicht.

1. Installieren Sie Nginx

Sie können Nginx manuell installieren und konfigurieren oder das LNMP-Ein-Klick-Installationspaket verwenden, um Nginx zu installieren. Die nützlicheren sind: Oneinstack und LNMP. Wenn Sie es nicht verwenden möchten, können Sie das Ein-Klick-Nginx-Installationspaket von xiaoz ausprobieren (gilt für Centos 7 und Deebian 8).

  1. https://GitHub.com/hellonow/nginx-cdn

Linux installiert Nginx mit einem Klick und aktiviert CDN (Reverse-Proxy). Führen Sie einfach den folgenden Befehl aus, um es zu installieren.

wget https://raw.githubusercontent.com/helloxz/nginx-cdn/master/nginx.sh
chmod +x nginx.sh && ./nginx.sh

2. Nginx-bezogene Konfiguration

Hier verwende ich wzfou.com zur Beschleunigung. Es gibt einen Ursprungs-VPS und einen VPS, der als CDN-Reverse-Proxy verwendet wird. Die entsprechenden IPs der beiden sind wie folgt:

1. Quellseite: 192.168.1.100, wo die Daten der Website wzfou.com tatsächlich gespeichert sind.

2. CDN:192.168.1.101  CDN-Knoten. Wenn mehrere CDN-Knoten vorhanden sind, ist die Betriebsmethode dieselbe

Ändern Sie zunächst die Hosts auf dem CDN-Knoten. Der Zweck besteht darin, dem CDN-Knoten mitzuteilen, wo er Website-Daten erhalten soll, d. h. die Return-to-Source-Adresse.


vi /etc/hosts
192.168.1.100	www.wzfou.com

Erstellen Sie dann die Nginx-Konfigurationsdatei wzfou.com.conf auf dem CDN-Knoten

#创建缓存目录
mkdir -p /data/wwwroot/caches/wzfou.com
#设置缓存目录权限
chown -R www:www /data/wwwroot/caches/wzfou.com
#创建wzfou.com.conf
vi /usr/local/nginx/conf/vhost/wzfou.com.conf

Fügen Sie den folgenden Inhalt zu wzfou.com.conf hinzu. Bitte passen Sie das Cache-Verzeichnis/die Cache-Zeit entsprechend der tatsächlichen Situation an. Die Bedeutung der einzelnen Parameter wird später ausführlich erläutert.

proxy_cache_path /data/wwwroot/caches/wzfou.com levels=1:2 keys_zone=wzfou:50m inactive=30m max_size=50m;
server {
    listen 80;
    server_name wzfou.com;
    charset utf-8,gbk;
        location / {
        proxy_set_header Accept-Encoding "";
           proxy_pass https://wzfou.com;
           proxy_redirect off;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_cache wzfou;
           proxy_cache_valid  200 304  30m;
           proxy_cache_valid  301 24h;
           proxy_cache_valid  500 502 503 504 0s;
           proxy_cache_valid any 1s;
           proxy_cache_min_uses 1;
           expires 12h;
    }
}

Die entsprechenden Anweisungen lauten wie folgt:

1. /data/wwwroot/caches/wzfou.com: ist das Cache-Verzeichnis

2. levels: Geben Sie an, dass der Cache-Speicherplatz über zwei Ebenen von Hash-Verzeichnissen verfügt: Das Verzeichnis der ersten Ebene besteht aus 1 Buchstaben und das Verzeichnis der zweiten Ebene aus 2 Buchstaben.

3. keys_zone=wzfou:50m: Geben Sie dem Cache-Speicherplatz einen Namen, hier heißt er „wzfou“, und die folgenden 50 m beziehen sich auf den Speicher-Cache-Speicherplatz.

4. inactive=30m: Wenn nicht innerhalb von 30 Minuten auf die Ressource zugegriffen wird, wird sie gelöscht.

5. max_size=50m: Bezieht sich auf die Festplatten-Cache-Größe von 50 MB

6. proxy_cache_valid: Geben Sie die Statuscode-Cache-Zeit an. Schreiben Sie den Statuscode vorne und die Cache-Zeit hinten.

Laden Sie schließlich nginx neu, damit die Konfiguration wirksam wird. Wenn Sie oneinstack verwenden, geben Sie den Befehl service nginx reload ein. Wenn es sich um ein xiaoz-Ein-Klick-Skript handelt, geben Sie Folgendes ein: /usr/local /nginx/sbin/nginx -s reload .  

3. HTTPS-Site-Reverse-Proxy

Was oben geteilt wird, sind die Nginx-Reverse-Proxy-Einstellungen für HTTP-Sites. Wenn Sie HTTPS-Sites als Reverse-Proxy verwenden möchten, müssen Sie zuerst ein SSL-Zertifikat für Ihren Domainnamen beantragen und dann nur noch festlegen Um einen guten SSL-Zertifikatspfad zu finden, verwenden Sie bitte die folgende Konfiguration, um ihn anzupassen:

proxy_cache_path /data/wwwroot/caches/wzfou.com levels=1:2 keys_zone=wzfou:50m inactive=30m max_size=50m;
server {
  	listen 443 ssl http2;
	ssl_certificate	/data/ssl/wzfou/wzfou.com.crt;
	ssl_certificate_key	/data/ssl/wzfou/wzfou.com.key;
	ssl_session_timeout 1d;
	ssl_session_cache builtin:1000 shared:SSL:10m;
    #ssl_dhparam /data/ssl/dhparam.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
    ssl_prefer_server_ciphers on;


    ssl_stapling on;
    ssl_stapling_verify on;

    server_name wzfou.com;
    access_log /data/wwwlogs/wzfou.com_nginx.log combined;
   
    charset utf-8,gbk;
        location / {
        proxy_set_header Accept-Encoding "";
           proxy_pass https://wzfou.com;
           proxy_redirect off;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_cache wzfou;
           proxy_cache_valid  200 304  30m;
           proxy_cache_valid  301 24h;
           proxy_cache_valid  500 502 503 504 0s;
           proxy_cache_valid any 1s;
           proxy_cache_min_uses 1;
           expires 12h;
    }
}
server {
    listen 80 default_server;
    return 301 https://$host$request_uri;
}

4. ngx_cache_purge löscht den Update-Cache

Das Bereinigen des Nginx-Cache erfordert die Hilfe des ngx_cache_purge-Moduls. Sie können den Befehl nginx -V eingeben, um die kompilierten Module anzuzeigen. Wenn kein ngx_cache_purge vorhanden ist, bedeutet dies, dass das Modul vorhanden ist nicht installiert und Sie müssen Nginx neu kompilieren.

4.1  Konfigurieren Sie ngx_cache_purge

Fügen Sie die folgende Konfiguration zum Serverabschnitt hinzu und laden Sie Nginx neu. Bitte achten Sie darauf, dass das folgende wzfou mit dem durch keys_zone definierten Wert übereinstimmt, sonst startet Nginx nicht.

location ~ /purge(/.*) {
allow all;
proxy_cache_purge wzfou $proxy_host$1$is_args$args;
error_page 405 =200 /purge$1;
}

Wenn Sie den Cache leeren möchten, fügen Sie einfach den Parameter purge hinzu, z. B. https://www.xiaoz.me/purge/xxx.png Cache, Sie werden wie folgt aufgefordert. Wenn kein Cache vorhanden ist, wird 404 zurückgegeben. Wenn 404 zurückgegeben wird, ist die Konfiguration möglicherweise nicht erfolgreich.

4.2  WordPress aktualisiert den Cache automatisch

Wenn die Seite bei WordPress-Blogs nach der CDN-Aktivierung zwischengespeichert wird und nicht sofort angezeigt werden kann, nachdem der Benutzer einen Kommentar übermittelt hat, können Sie die asynchrone Ajax-Anfrageschnittstelle ngx_cache_purge verwenden, um den Seitencache zu leeren, wenn der Benutzer einen Kommentar übermittelt. Fügen Sie einfach die folgenden js zu footer.php hinzu.

<script>
		$(document).ready(function(){
			$("#submit").click(function(){
				var uri = "https://wzfou.com/purge" + window.location.pathname;
				$.get(uri,function(data,status){
					return true;
				});
			});
		});
	</script>

Das Folgende ist die vollständige Konfiguration des Xiaoz Blog CDN, nur als Referenz. Sie müssen Keys_zone, SSL-Pfad, Domänennamen usw. ersetzen.

proxy_cache_path /data/caches levels=1:2 keys_zone=xiaozcdn:100m inactive=30m max_size=100m;
server
    {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    ssl on;
    ssl_certificate /xxx/www_xiaoz_me.crt;
    ssl_certificate_key /xxx/www_xiaoz_me.key;
    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:50m;
    ssl_session_tickets off;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
    ssl_prefer_server_ciphers on;
    ssl_stapling on;
    ssl_stapling_verify on;

    server_name     www.xiaoz.me;
    charset utf-8,gbk;

   #删除缓存
    location ~ /dcache(/.*) {
    allow all;
    proxy_cache_purge xiaozcdn $proxy_host$1$is_args$args;
    error_page 405 =200 /purge$1;
    }

       location / {
       #proxy_set_header Accept-Encoding "";
       proxy_pass https://www.xiaoz.me;
       proxy_redirect off;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_cache xiaozcdn;
       proxy_cache_valid  200 304  30m;
       proxy_cache_valid  301 24h;
       proxy_cache_valid  500 502 503 504 0s;
       proxy_cache_valid any 1s;
       #达到第几次被缓存?
       proxy_cache_min_uses 1;
       expires 12h;
       proxy_cache_key    $uri$is_args$args;
    }
}
server
{
    listen 80;
    server_name www.xiaoz.me;
    rewrite ^(.*) https://www.xiaoz.me$1 permanent;
}

5. Machen Sie gute Arbeit bei der Auflösung von DNS-Domänennamen

Mithilfe der DNS-Auflösungsfunktionen wie Leitungen, Regionen und Clients, die von der DNS-Domänennamenauflösung bereitgestellt werden, können wir verschiedene Breitbandbenutzer, Provinzbenutzer und Clientbenutzer in CDN-Knoten auflösen.

Verwenden Sie den Webmaster-Tool-Test, um zu sehen, dass Benutzer von verschiedenen Orten auf wzfou.com auf verschiedene CDN-Knoten zugreifen, was bedeutet, dass unsere CDN-Beschleunigungsbereitstellung erfolgreich ist.

6. Es ist nicht möglich, eine echte IP zu erhalten, nachdem CDN aktiviert wurde

Wenn Sie ein WordPress-Benutzer sind und die Nginx-CDN-Beschleunigung aktivieren, werden Sie feststellen, dass die vom WP-Backend erhaltenen Benutzerkommentar-IPs zu CDN-Knoten geworden sind. Sie müssen nur den folgenden Code zu wp hinzufügen - In der config.php-Datei:

if (isset($_SERVER['HTTP_X_REAL_IP'])) {
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_REAL_IP'];
}

7. Zusammenfassung

Nginx bindet Domänennamen umgekehrt, um einen CDN-Beschleunigungsserver mit geringen Kosten und einfacher Installation und Konfiguration zu erstellen. Er eignet sich besonders für Freunde, die kein kostenpflichtiges CDN verwenden möchten. Tatsächlich verwenden viele professionelle CDN-Beschleuniger auch den Nginx-Reverse-Proxy zur Beschleunigung Man kann sagen, dass Nginx CDN eine sehr effektive Beschleunigungsmethode ist.

Bei der Verwendung der Nginx-CDN-Beschleunigung müssen zwei Probleme beachtet werden. Das eine ist das Problem der Cache-Aktualisierung. Wenn Ihre Webseite häufig aktualisiert wird, können Sie ein Aktualisierungszeitintervall festlegen . Wir können PHP oder Nginx usw. verwenden, um die echte IP-Adresse direkt zu erhalten.

Hinterlasse eine Antwort