Nginx rewrite板块详解、expires缓存配置及gzip压缩策略

  • 时间:2018-12-19 23:00 作者:feixiang2011 来源:feixiang2011 阅读:79
  • 扫一扫,手机访问
摘要:一、rewrite使用rewrite的主要功能是实现URI地址的重定向,将客户请求的URI基于regex所形容的模式进行检查,匹配到时将其替换为replacement指定的新的URI,即便用nginx提供的全局变量或者自定义的变量,结合正则表达式和标志位实现url重写以及重定向。假如replacem

一、rewrite使用

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

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

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

regex 常用正则表达式说明:

Nginx rewrite板块详解、expires缓存配置及gzip压缩策略

flag标记说明:

Nginx rewrite板块详解、expires缓存配置及gzip压缩策略

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

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

condition条件说明:

Nginx rewrite板块详解、expires缓存配置及gzip压缩策略

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

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

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

中止解决并返回指定响应码给用户。return使用位置:server{}, location{}, if{}

rewrite使用示例:

http {
include mime.types;
default_type application/octet-stream;
log_format myformat '$remote_addr - $remote_user [$time_local] "$request" ';
access_log logs/my.log myformat;
sendfile on;
keepalive_timeout 65;

server {
listen 8003;
server_name www.wf.com;
location / {
rewrite '^/images/(.*)\.(png|jpg)$' /img?file=$1.$2;
set $image_file $1;
set $image_type $2;
}
location /img {
root html;
try_files /$arg_file /image404.html;
}
location /image404.html {
return 404 "image not found exception";
}
}
}

如上配置中/images/http://toutiao.com/group/6636694513119150606/feixiang.jpg会重写到/img?file=http://toutiao.com/group/6636694513119150606/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使用示例:

http {

......

server {

listen 8004;

server_name www.wf.com;

location / {

root html;

index index.html index.htm;

}

location ~ \.(png|jpg|js|css|gif) {

root html/images;

expires 5m;

}

}

}

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

(2)修改index.html, 添加泉城广场

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

三、gzip压缩策略

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

gzip使用示例:

http {

......

server {

listen 8004;

server_name www.wf.com;

gzip on;

gzip_buffers 4 16k;

gzip_comp_level 7;

gzip_min_length 500;

gzip_types text/css text/xml application/javascript;

location / {

root html;

index index.html index.htm;

}

location ~ \.(png|jpg|js|css|gif) {

root html/images;

expires 5m;

}

}

}

gzip语法说明:

Nginx rewrite板块详解、expires缓存配置及gzip压缩策略

gzip使用注意事项:

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

(2)太小的文件没必要压缩,由于压缩以后会添加少量头信息,反而导致文件变大。

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

  • 全部评论(0)
最新发布的资讯信息
【系统环境|软件环境】如何成为一名大数据工程师?(2019-05-20 12:11)
【系统环境|Linux】大数据四大常识,不会你敢说自己在做大数据?(2019-05-19 11:39)
【系统环境|】需要同时掌握AVA和Linux,才可以继续大数据课程的学习(2019-05-18 10:28)
【系统环境|软件环境】学习大数据,一定要了解大数据的这些用途(2019-05-16 10:49)
【系统环境|Linux】bt宝塔控制面板mysql频繁自动停止详细解决办法(2019-05-16 08:52)
【系统环境|】大数据零基础学习路线,新人记得保存收藏哦(2019-05-15 10:54)
【系统环境|】全网最全最新的大数据系统学习路径(2019-05-14 15:38)
【系统环境|Linux】毕业设计:音乐分享系统(2019-05-14 07:48)
【系统环境|】教你零基础如何快速入门大数据技巧(2019-05-12 11:25)
【系统环境|】想学习大数据?这才是完整的大数据学习体系(2019-05-11 11:33)
手机二维码手机访问领取大礼包
返回顶部