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

不言
不言Original
2018-08-06 11:41:292350Durchsuche

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

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;
    }
}

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

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

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\.;

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;
    }
}

2. nginx -s reload Nginx-Konfigurationsdatei neu laden

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

  • vim /vagrant/ a/ a.txt

Hello world!

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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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

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!

Stellungnahme:
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