美文网首页工具
Nginx rewrite模块详解、expires缓存配置及gz

Nginx rewrite模块详解、expires缓存配置及gz

作者: wangpf2011 | 来源:发表于2018-12-19 21:46 被阅读7次

    一、rewrite使用

    rewrite的主要功能是实现URI地址的重定向,将用户请求的URI基于regex所描述的模式进行检查,匹配到时将其替换为replacement指定的新的URI,即使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向。如果replacement是以http://或https://开头,则替换结果会直接以重向返回给客户端。

    1)rewrite指令语法结构:rewrite regex replacement [flag]

    rewrite使用位置:server{}, location{}, if{}

    regex 常用正则表达式说明   flag标记说明

    2)if指令语法结构:if (condition) { ... }

    引入新的上下文,条件满足时,执行配置块中的配置指令,大括号内的rewrite指令将被执行。if使用位置:server{}, location{}

    condition条件说明

    3)set指令语法结构:set variable value;

    用户自定义变量,变量定义和调用都要以$开头。set使用位置:server{}, location{}, if{}

    4)return指令语法结构:return code [text];

    停止处理并返回指定响应码给客户。return使用位置:server{}, location{}, if{}

    rewrite使用示例

    如上配置中/images/feixiang.jpg会重写到/img?file=feixiang.jpg,于是匹配到 location /img。然后通过try_files获取存在的文件进行返回,如果文件不存在则直接返回404错误。

    表面看rewrite和location功能有点像,都能实现跳转,其主要区别在于rewrite是在同一域名内更改获取资源的路径,而location是对一类路径做控制访问或反向代理,可以proxy_pass到其他机器。很多情况下rewrite也会写在location里,它们的执行顺序是:(1)执行server块的rewrite指令;(2)执行location匹配;(3)执行选定的location中的rewrite指令。如果其中某步URI被重写,则重新循环执行(1)~(3),直到找到真实存在的文件;循环超过10次,则返回500 Internal Server Error错误。

    二、浏览器本地缓存配置及动静分离

    expires语法: expires 60s|m|h|d

    expires使用位置:location{}

    expires使用示例

    (1)在html目录下创建一个images文件,在该文件中放一张图片

    (2)修改index.html, 增加<img src="feixiang.jpg"  alt="泉城广场" />

    (3)修改nginx.conf配置,配置两个location实现动静分离,并且在静态文件中增加expires的缓存期限。

    三、gzip压缩策略

    浏览器请求url,同时声明当前浏览器可以支持压缩类型(gzip、deflate等),服务端会把内容根据浏览器所支持的压缩策略去进行压缩并返回给浏览器,浏览器拿到数据以后进行解码。

    gzip使用示例 gzip语法说明

    gzip使用注意事项:

    (1)类似图片和mp3这样的二进制文件,没必要做压缩处理,因为这类文件压缩比很小,压缩过程会耗费CPU资源。

    (2)太小的文件没必要压缩,因为压缩以后会增加一些头信息,反而导致文件变大。

    (3)Nginx默认只对text/html进行压缩 ,如果要对html之外的内容进行压缩传输,需要我们进行手动配置。

    相关文章

      网友评论

        本文标题:Nginx rewrite模块详解、expires缓存配置及gz

        本文链接:https://www.haomeiwen.com/subject/hdkujttx.html