Cet article vous présente Nginx en tant que service Web de ressources statiques pour contrôler le cache du navigateur et implémenter l'anti-sangsue. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
Le cache du navigateur suit le mécanisme de mise en cache défini par le protocole HTTP (tel que : Expire ; Contrôle du cache, etc. .) .
校验是否过期 | Cache-Control(max-age)、Expires |
---|---|
协议中Etag头信息校验 | Etag |
Last-Modified头信息校验 | Last-Modified |
Nginx passe le contrôle du navigateur cache en ajoutant les informations d’en-tête Cache-Control (max-age) et Expires.
Syntax: expires [modified] time; expires epoch | max | off; Default: expires off; Context: http, server, location, if in location
Cet élément de configuration peut contrôler "Expire" et "Cache" dans le HTTP "response -Control" informations d'en-tête (qui contrôlent la mise en cache des pages).
Le délai d'expiration dans l'en-tête "Expires" est la somme de l'heure actuelle du système et de la valeur de temps que vous avez définie. Si le paramètre modifié est spécifié, le délai d'expiration est la somme de l'heure de la dernière modification du fichier et de la valeur temporelle que vous avez définie.
Le contenu de l'en-tête "Cache-Control" dépend du symbole spécifiant l'heure. Vous pouvez utiliser des nombres positifs ou négatifs dans la valeur temporelle.
Lorsque le temps est un nombre négatif, "Cache-Control : no-cache" ;
Lorsque le temps est un nombre positif ou 0, "Cache-Control : max-age=time", l'unité est la seconde. Le paramètre
epoch est utilisé pour spécifier la valeur de « Expire » au 1er janvier 1970, 00:00:01 GMT.
Le paramètre max est utilisé pour spécifier la valeur de « Expires » comme « Jeu. 31 décembre 2037 23:55:55 GMT » et la valeur de « Cache-Control » comme 10 ans. Le paramètre
off désactive l'ajout ou la modification des informations d'en-tête de réponse "Expires" et "Cache-Control".
server { location ~ .*\.(txt|xml)$ { # 设置过期时间为1天 expires 1d; root /vagrant/doc; } }
/vagrant/doc/hello.txt
fichier [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
et concentrez-vous sur les deux champs Expires
et Cache-Control
. On peut voir que le temps de cache de hello.txt est de 1 jour. .
Objectif : prévenir le vol de ressources
Idée : distinguer les demandes anormales des utilisateurs
Syntax: valid_referers none | blocked | server_names | string ...; Default: — Context: server, location
aucun : il n'y a pas de champ Référent dans l'en-tête de la requête
bloqué : Bien que le champ "Referer" existe dans l'en-tête de la requête, sa valeur a été supprimée par le pare-feu ou le serveur proxyces valeurs sont des chaînes qui ne commencent pas par "http:// ; " ou "https://";
server_names : Le champ d'en-tête de requête "Referer" contient le nom du serveur
Chaîne arbitraire : Définit un nom de serveur et un préfixe URI facultatif. Le nom du serveur peut avoir « * » au début ou à la fin. Le port du serveur dans le champ "Referer" est ignoré lors de la vérification.
Expression régulière : la chaîne doit commencer par ~. Il est à noter que l'expression régulière correspond au contenu après "http://" ou "https://".
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
fichiervim /. vagrant/a/a.txt
Hello world!
Non avec référent , vous pouvez accéder à
[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
le référent est http://www.baidu.com
, et renvoyer 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
le référent est http://192.168.1.110
et est accessible normalement
[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
le référent commence par example.
ou se termine par .example.com
et peut être accessible normalement Accédez à
[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
le référent est http://192.168.1.110
, et vous pouvez accéder à
[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
, retournez 403http://google.com
[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
, vous pouvez accéder à http://www.google.com
[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
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!