首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Nginx作为静态资源web服务-控制浏览器缓存、防盗链

图书推荐

正文内容

1. 浏览器缓存简介

浏览器缓存遵循HTTP协议定义的缓存机制(如:Expires;Cache-control等)。

当浏览器无缓存时,请求响应流程

当浏览器有缓存时,请求响应流程

浏览器缓存校验过期机制浏览器请求流程

2. Nginx控制浏览器缓存配置

ngx_http_headers_module语法

本配置项可以控制HTTP响应中的“Expires”和“Cache-Control”头信息,(起到控制页面缓存的作用)。

“Expires”头信息中的过期时间为当前系统时间与您设定的 time 值时间的和。如果指定了 modified 参数,则过期时间为文件的最后修改时间与您设定的 time 值时间的和。

“Cache-Control”头信息的内容取决于指定 time 的符号。可以在time值中使用正数或负数。

当 time 为负数,“Cache-Control: no-cache”;

当 time 为正数或0,“Cache-Control: max-age=time”,单位是秒。

参数用于指定“Expires”的值为 1 January, 1970, 00:00:01 GMT。

参数用于指定“Expires”的值为 “Thu, 31 Dec 2037 23:55:55 GMT”,“Cache-Control” 的值为10 年。

参数令对“Expires” 和 “Cache-Control”响应头信息的添加或修改失效。

3. 应用实例

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

2. nginx -s reload 重新载入nginx配置文件3. 创建 /vagrant/doc/hello.txt 文件4. 通过curl访问 192.168.33.88/hello.txt,查看http响应头信息

重点查看 和 两个字段,可见,hello.txt 的缓存时间为1天。

二、防盗链

目的:防止资源被盗用

思路:区别哪些请求是非正常的用户请求

1. 基于http_refer防盗链配置模块ngx_http_referer_module语法

:请求头中没有 Referer 字段

:请求头中虽然存在“Referer”字段,但是它的值已经被防火墙或代理服务器删除;这些值是不以“http://”或“https://”开头的字符串;

:“Referer”请求头字段包含该服务器名称

任意字符串:定义一个服务器名称和一个可选的URI前缀。服务器名开始或结尾可以有 “*” 。检查时,“Referer”字段中的服务器端口会被忽略。

正则表达式:字符串必须以开头,值得注意的是,正则表达式匹配的是在“http://”或“https://”之后的内容。

示例

2. 应用实例

1. vim conf.d/static.conf

2. nginx -s reload 重新载入nginx配置文件3. 创建文件4. 使用 curl进行访问测试

不带referer,可以正常访问

referer为 ,返回403

referer以 开头或 结尾,可以正常访问

referer为 ,可以正常访问

referer为 ,返回403

referer为 ,可以正常访问

以上是文章全部内容,欢迎关注“PHP自学中心”,导航栏里已经给大家整理了基础知识题,笔试题,视频教程等,有需要的可以查看查看

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180808B08SAW00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券