Heim >Backend-Entwicklung >PHP-Tutorial >Nginx dient als statischer Ressourcen-Webdienst, um das Browser-Caching zu steuern und Hotlinking zu verhindern
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.
Der Browser-Cache folgt dem durch das HTTP-Protokoll definierten Caching-Mechanismus (z. B. Läuft ab; Cache-Steuerung usw.). .) .
校验是否过期 | Cache-Control(max-age)、Expires |
---|---|
协议中Etag头信息校验 | Etag |
Last-Modified头信息校验 | Last-Modified |
Nginx übergibt den Browser Cache durch Hinzufügen von Cache-Control (max-age) und Expires-Header-Informationen.
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“.
server { location ~ .*\.(txt|xml)$ { # 设置过期时间为1天 expires 1d; root /vagrant/doc; } }
/vagrant/doc/hello.txt
-Datei [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.
Zweck: Ressourcendiebstahl verhindern
Idee: Unterscheidung, welche Anfragen abnormale Benutzeranfragen sind
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.
valid_referers none blocked server_names *.example.com example.* www.example.org/galleries/ ~\.google\.;
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; } }
/vagrant/doc/hello.txt
Datei erstellen vim /vagrant/ a/ a.txt
Hello world!
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!