如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留链接信息。

nginx作为目前最流行的服务器端软件,成功有其必然的原因。苏南大叔的博客,服务器端容器也使用了nginx技术。在本文中,您将看到:“nginx的conf配置文件,如何有效控制资源请求"的相关文章。这些静态资源主要包括:imgjscss等常见类型,涉及的内容都是nginxconf文件的高级用法。

禁用静态资源缓存

如果禁用了静态资源缓存的话,客户每次访问网站的时候,静态资源都是要从服务器端进行请求的,而不是从本地缓存中读取。

  • 可能有人会说了,谁会这么干啊。其实,确实有这样的需求的。比如:苏南大叔以前写过一个网速对比程序。要求不能从本地缓存读取到的数据,必须每次都从服务器请求数据。
  • 当然,也有人会说:可以修改网页代码中静态资源的地址,在其地址后面,增加个随机时间戳。这样,就可以有效避免读取本地缓存了。苏南大叔以前也这么干过,不过觉得还是不稳妥,修改代码比较麻烦。

利用nginxconf文件配置,在服务器端进行设定:浏览器不缓存所有的静态资源。核心配置代码如下:

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$ {
  add_header Cache-Control no-store;
}

控制静态资源的缓存时长

不过一般来说,对于静态资源的缓存控制,一般是类似下面所示的。下面的单位d字样就是day天。

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
  expires 100d;
}
location ~ .*\.(js|css)?$ {
  etag     on;
  expires  max;
}

上述范例,对图片类文件缓存100天,而js或者css文件,做最大限度缓存。

expires指令用于控制HTTP应答中的“Expires”和“Cache-Control”Header头部信息,起到控制页面缓存的作用。

语法:expires [time|epoch|max|off]
默认值:off

  • expires <time>:可以使用正数或负数。“Expires”头标的值将通过当前系统时间加上设定time值来设定。

time值还控制"Cache-Control"的值:负数表示no-cache,正数或零表示max-age=time

  • expires -1:指定“Expires”的值为当前服务器时间-1s,即永远过期。
  • expires epoch:指定“Expires”的值为 1 January,1970,00:00:01 GMT
  • expires max: 指定“Expires”的值为31 December2037 23:59:59GMT,"Cache-Control"的值为10年。
  • expires off:不修改“Expires”和"Cache-Control"的值

转移服务器端静态资源位置

假如,苏南大叔要请求同一个资源/demo/demo.png,如果nginx用的是不同的配置,则:

  • 如果设置的是:root /code/nginx/demo/,那么实际上的资源位置应该是/code/nginx/demo/demo/demo.png
  • 如果设置的是:alias /code/nginx/demo/,那么实际上的字样位置应该被改写到/code/nginx/demo/demo.png

下面的配置代码中,苏南大叔再一次演示如何使用root/alias进行nginx请求改写。

location ^~ /root/ {
    root  /code/nginx/root/ ;
}
location ^~ /alias/ {
    alias  /code/nginx/alias/ ;
}

nginx如何有效控制资源请求有效期及资源位置 - nginx_root

nginx如何有效控制资源请求有效期及资源位置(图5-1)

nginx如何有效控制资源请求有效期及资源位置 - nginx_alias

nginx如何有效控制资源请求有效期及资源位置(图5-2)

拦截请求跳转到新的url

下面演示的是:拦截/baidu/下面的请求,然后永久性的permanent跳转到百度的搜索页面。当然,这个过程中,地址栏里面的url是发生变化的。其实这个小功能还是不错的,善加利用一下,就可以利用这种拦截特殊url的方式,做很多特殊的跳转动作。想象力由你来发挥了。

location ^~ /baidu/ {
    rewrite ^/baidu/(.*)$  https://www.baidu.com/s?wd=$1 permanent;
}

nginx如何有效控制资源请求有效期及资源位置 - nginx_rewrite

nginx如何有效控制资源请求有效期及资源位置(图5-3)

nginx如何有效控制资源请求有效期及资源位置 - nginx_rewrite_2

nginx如何有效控制资源请求有效期及资源位置(图5-4)

拒绝某些url的请求

返回403错误信息,比如经常可以用于隐藏后台目录地址url。

location ^~ /admin/{
    deny all;
}

或者配置为:仅仅允许某个ip(例子上是123.123.123.123)访问特定资源。

location ^~ /admin/{
    allow 123.123.123.123;
    deny all;
}

nginx如何有效控制资源请求有效期及资源位置 - nginx_deny_all

nginx如何有效控制资源请求有效期及资源位置(图5-5)

相关文章

总结

nginx设置,是网站运维的一个必备技能点。如果能够掌握nginx的配置文件的写法,应该可以做到事半功倍的效果,这里仅仅总结了几点简单常见的nginx设置场景。

想知道更多有关nginx设置的特殊技巧吗?更多nginx相关经验文章。请点击苏南大叔带来的文章:http://newsn.com.cn/tag/nginx/

  【nginx】秘籍文章入口,仅传授于有缘之人  nginx

欢迎转载传播本篇原创文章,转载请保留链接及作者信息。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。

苏南大叔需要你的支持

打赏任意金额,发送截图到邮箱 shang@newsn.net ,可以领取精选回馈如下(任选其一):
  • 《前端视频教程大礼包》一套
  • 《wordpress精选皮肤》一套
  • 《dedecms织梦精选模板》一套
感谢您的打赏,让我更有动力,将更多精彩教程文章,呈现给大家!谢谢!

岁月静好

关注互联网发展,关注苏南大叔的《程序如此灵动~》博客
本文章来自:程序如此灵动~
博客地址为:http://newsn.com.cn/
原文地址为:http://newsn.com.cn/say/nginx-conf-resource.html
上一篇好文:electron如何利用await解决smalltalk对话框异步执行的问题
下一篇好文:如何利用xenu检测网站异常资源,并制作地图xml文件

如果您转载了本文章,出于某种原因,并没有注明作者或者出处。
在这里,苏南大叔也表示理解和支持。因为苏南大叔深深地明白:
您会在合适的时机,合适的地方,给本博客一个外链。对吧?
您若开心,便是安好!岁月静好,但愿世界和平,没有纷争~