Heim > Backend-Entwicklung > PHP-Tutorial > Nginx dient als statischer Ressourcen-Webdienst, um das Browser-Caching zu steuern und Hotlinking zu verhindern

Nginx dient als statischer Ressourcen-Webdienst, um das Browser-Caching zu steuern und Hotlinking zu verhindern

不言
Freigeben: 2023-04-03 16:18:01
Original
2420 Leute haben es durchsucht

Dieser Artikel stellt Ihnen Nginx als statischen Ressourcen-Webdienst zur Steuerung des Browser-Cache und zur Implementierung von Anti-Leeching vor. Ich hoffe, dass er für Sie hilfreich ist.

1. Browser-Cache steuern

1. Einführung in den Browser-Cache

Der Browser-Cache folgt dem durch das HTTP-Protokoll definierten Caching-Mechanismus (z. B. Läuft ab; Cache-Steuerung usw.). .) .

Wenn der Browser keinen Cache hat, erfolgt der Anforderungsantwortprozess

Nginx dient als statischer Ressourcen-Webdienst, um das Browser-Caching zu steuern und Hotlinking zu verhindern

Wenn der Browser hat beim Caching einen Antwortprozess angefordert

Nginx dient als statischer Ressourcen-Webdienst, um das Browser-Caching zu steuern und Hotlinking zu verhindern

Ablaufmechanismus für die Browser-Cache-Überprüfung

校验是否过期 Cache-Control(max-age)、Expires
协议中Etag头信息校验 Etag
Last-Modified头信息校验 Last-Modified

Browser-Anfrageprozess

Nginx dient als statischer Ressourcen-Webdienst, um das Browser-Caching zu steuern und Hotlinking zu verhindern

2. Nginx steuert die Browser-Cache-Konfiguration

Nginx übergibt den Browser Cache durch Hinzufügen von Cache-Control (max-age) und Expires-Header-Informationen.

ngx_http_headers_module

Syntax

Syntax:    expires [modified] time;
        expires epoch | max | off;
Default:    expires off;
Context:    http, server, location, if in location
Nach dem Login kopieren

Dieses Konfigurationselement kann „Expires“ und „Cache-Control“ im HTTP steuern Antwort „Header-Informationen (die eine Rolle bei der Steuerung des Seiten-Cachings spielen).

Die Ablaufzeit im Header „Expires“ ist die Summe aus der aktuellen Systemzeit und dem von Ihnen festgelegten Zeitwert. Wenn der geänderte Parameter angegeben ist, ist die Ablaufzeit die Summe aus der letzten Änderungszeit der Datei und dem von Ihnen festgelegten Zeitwert.
Der Inhalt des Headers „Cache-Control“ hängt vom Symbol ab, das die Zeit angibt. Sie können im Zeitwert positive oder negative Zahlen verwenden.
Wenn die Zeit eine negative Zahl ist, „Cache-Control: no-cache“;
Wenn die Zeit eine positive Zahl oder 0 ist, „Cache-Control: max-age=time“, ist die Einheit Sekunden. Der Parameter

epoch wird verwendet, um den Wert von „Expires“ als 1. Januar 1970, 00:00:01 GMT anzugeben.
Der Parameter max wird verwendet, um den Wert von „Expires“ als „Do, 31 Dec 2037 23:55:55 GMT“ und den Wert von „Cache-Control“ als 10 Jahre anzugeben. Der Parameter
off deaktiviert das Hinzufügen oder Ändern der Antwortheaderinformationen „Expires“ und „Cache-Control“.

3. Anwendungsbeispiele

1. vim /etc/nginx/conf.d/static.conf

server {
    location ~ .*\.(txt|xml)$ {
        # 设置过期时间为1天
        expires 1d;
        root /vagrant/doc;
    }
}
Nach dem Login kopieren

2 -s reload Nginx-Konfigurationsdatei neu laden

3. Erstellen Sie die /vagrant/doc/hello.txt-Datei

4. Greifen Sie über curl.txt auf 192.168.33.88/hello zu , überprüfen Sie die HTTP-Antwort-Header-Informationen

[root/etc/nginx]# curl -I 192.168.33.88/hello.txt
HTTP/1.1 200 OK
Server: nginx/1.14.0
Date: Tue, 17 Jul 2018 07:12:11 GMT
Content-Type: text/plain
Content-Length: 12
Last-Modified: Tue, 17 Jul 2018 07:07:22 GMT
Connection: keep-alive
ETag: "5b4d95aa-c"
Expires: Wed, 18 Jul 2018 07:12:11 GMT
Cache-Control: max-age=86400
Accept-Ranges: bytes
Nach dem Login kopieren

Konzentrieren Sie sich auf die beiden Felder Expires und Cache-Control Es ist ersichtlich, dass die Cache-Zeit von hello.txt 1 Tag beträgt.

2. Anti-Hotlinking

Zweck: Ressourcendiebstahl verhindern
Idee: Unterscheidung, welche Anfragen abnormale Benutzeranfragen sind

1 auf http_refer Anti-Hotlink-Konfigurationsmodul

ngx_http_referer_module

Syntax

Syntax:    valid_referers none | blocked | server_names | string ...;
Default:    —
Context:    server, location
Nach dem Login kopieren

none: Es gibt kein Referrer-Feld in der Anfrage header
blockiert: Obwohl das Feld „Referer“ im Anforderungsheader vorhanden ist, wurde sein Wert von der Firewall oder dem Proxyserver gelöscht. Diese Werte beginnen nicht mit „http://“ oder „https://“;
server_names: Das Anforderungsheaderfeld „Referer“ enthält den Servernamen.
Beliebige Zeichenfolge: Definiert einen Servernamen und ein optionales URI-Präfix. Der Servername kann am Anfang oder Ende ein „*“ haben. Der Server-Port im Feld „Referer“ wird bei der Prüfung ignoriert.
Regulärer Ausdruck: Die Zeichenfolge muss mit ~ beginnen. Es ist zu beachten, dass der reguläre Ausdruck mit dem Inhalt nach „http://“ oder „https://“ übereinstimmt.

Beispiel

valid_referers none blocked server_names *.example.com example.* www.example.org/galleries/ ~\.google\.;
Nach dem Login kopieren

2. Anwendungsbeispiel

1. vim conf.d/static.conf

server {
    location ~ .*\.(txt|xml)$ {
        
        # 配置防盗链规则
        valid_referers none blocked 192.168.1.110 *.example.com example.* ~\.google\.;

        # 如果不符合防盗链规则,则返回403
        if ($invalid_referer) {
            return 403;
        }

        root /vagrant/doc;
    }
}
Nach dem Login kopieren

2. nginx -s reload Nginx-Konfigurationsdatei neu laden

3. /vagrant/doc/hello.txt Datei erstellen

  • vim /vagrant/ a/ a.txt

Hello world!
Nach dem Login kopieren

4. Curl für Zugriffstest verwenden

  • Ohne Referrer ist normaler Zugriff möglich

[root~]# curl -I http://127.0.0.1/hello.txt
HTTP/1.1 200 OK
Server: nginx/1.14.0
Date: Fri, 03 Aug 2018 01:34:12 GMT
Content-Type: text/plain
Content-Length: 12
Last-Modified: Tue, 17 Jul 2018 07:07:22 GMT
Connection: keep-alive
ETag: "5b4d95aa-c"
Accept-Ranges: bytes
Nach dem Login kopieren
  • Referer ist http://www.baidu.com, return 403

[root~]# curl -e "http://www.baidu.com" -I http://127.0.0.1/hello.txt
HTTP/1.1 403 Forbidden
Server: nginx/1.14.0
Date: Fri, 03 Aug 2018 01:34:34 GMT
Content-Type: text/html
Content-Length: 169
Connection: keep-alive
Nach dem Login kopieren
  • Referer ist http://192.168.1.110, kann normal aufgerufen werden

[root~]# curl -e "http://192.168.1.110" -I http://127.0.0.1/hello.txt
HTTP/1.1 200 OK
Server: nginx/1.14.0
Date: Thu, 02 Aug 2018 11:31:51 GMT
Content-Type: text/plain
Content-Length: 12
Last-Modified: Tue, 17 Jul 2018 07:07:22 GMT
Connection: keep-alive
ETag: "5b4d95aa-c"
Accept-Ranges: bytes
Nach dem Login kopieren
Nach dem Login kopieren
  • Referer beginnt mit example. oder endet mit .example.com, kann normal aufgerufen werden

[root~]# curl -e "http://www.example.com" -I http://127.0.0.1/hello.txt
HTTP/1.1 200 OK
Server: nginx/1.14.0
Date: Thu, 02 Aug 2018 11:33:47 GMT
Content-Type: text/plain
Content-Length: 12
Last-Modified: Tue, 17 Jul 2018 07:07:22 GMT
Connection: keep-alive
ETag: "5b4d95aa-c"
Accept-Ranges: bytes

[root~]# curl -e "http://example.baidu.com" -I http://127.0.0.1/hello.txt
HTTP/1.1 200 OK
Server: nginx/1.14.0
Date: Thu, 02 Aug 2018 11:33:53 GMT
Content-Type: text/plain
Content-Length: 12
Last-Modified: Tue, 17 Jul 2018 07:07:22 GMT
Connection: keep-alive
ETag: "5b4d95aa-c"
Accept-Ranges: bytes
Nach dem Login kopieren
  • Referer ist http://192.168.1.110, Sie können normal darauf zugreifen

[root~]# curl -e "http://192.168.1.110" -I http://127.0.0.1/hello.txt
HTTP/1.1 200 OK
Server: nginx/1.14.0
Date: Thu, 02 Aug 2018 11:31:51 GMT
Content-Type: text/plain
Content-Length: 12
Last-Modified: Tue, 17 Jul 2018 07:07:22 GMT
Connection: keep-alive
ETag: "5b4d95aa-c"
Accept-Ranges: bytes
Nach dem Login kopieren
Nach dem Login kopieren
  • Referer ist http://google.com, Rückgabe 403

[root~]# curl -e "http://google.com" -I http://127.0.0.1/hello.txt
HTTP/1.1 403 Forbidden
Server: nginx/1.14.0
Date: Thu, 02 Aug 2018 11:37:43 GMT
Content-Type: text/html
Content-Length: 169
Connection: keep-alive
Nach dem Login kopieren
  • Referer ist http://www.google.com und kann normal aufgerufen werden

[root~]# curl -e "http://www.google.com" -I http://127.0.0.1/hello.txt
HTTP/1.1 200 OK
Server: nginx/1.14.0
Date: Thu, 02 Aug 2018 11:37:50 GMT
Content-Type: text/plain
Content-Length: 12
Last-Modified: Tue, 17 Jul 2018 07:07:22 GMT
Connection: keep-alive
ETag: "5b4d95aa-c"
Accept-Ranges: bytes
Nach dem Login kopieren

Empfohlene verwandte Artikel:

Nginx als statischer Ressourcen-Webdienst und statische Ressourcenkomprimierung

Das obige ist der detaillierte Inhalt vonNginx dient als statischer Ressourcen-Webdienst, um das Browser-Caching zu steuern und Hotlinking zu verhindern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Erklärung dieser Website
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
Aktuelle Ausgaben
PHP-Datenerfassung?
Aus 1970-01-01 08:00:00
0
0
0
PHP-Erweiterung intl
Aus 1970-01-01 08:00:00
0
0
0
Wie man PHP gut lernt
Aus 1970-01-01 08:00:00
0
0
0
Mehrere PHP-Versionen
Aus 1970-01-01 08:00:00
0
0
0
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage