热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

一、rewrite使用rewrite的主要功能是实现URI地址的重定向,将客户请求的URI基于regex所形容的模式进行检查,匹配到时将其替换为replacement指定的新的UR
一、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之外的内容进行压缩传输,需要我们进行手动配置。


推荐阅读
  • C#实现文件的压缩与解压
    2019独角兽企业重金招聘Python工程师标准一、准备工作1、下载ICSharpCode.SharpZipLib.dll文件2、项目中引用这个dll二、文件压缩与解压共用类 ... [详细]
  • HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送www方式的数据。HTTP协议采用了请求响应模型。客服端向服务器发送一 ... [详细]
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • 本文探讨了使用JavaScript在不同页面间传递参数的技术方法。具体而言,从a.html页面跳转至b.html时,如何携带参数并使b.html替代当前页面显示,而非新开窗口。文中详细介绍了实现这一功能的代码及注释,帮助开发者更好地理解和应用该技术。 ... [详细]
  • MySQL初级篇——字符串、日期时间、流程控制函数的相关应用
    文章目录:1.字符串函数2.日期时间函数2.1获取日期时间2.2日期与时间戳的转换2.3获取年月日、时分秒、星期数、天数等函数2.4时间和秒钟的转换2. ... [详细]
  • This feature automatically validates new regions using the AWS SDK, ensuring compatibility and accuracy. ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
  • DVWA学习笔记系列:深入理解CSRF攻击机制
    DVWA学习笔记系列:深入理解CSRF攻击机制 ... [详细]
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • 本文介绍了如何利用Struts1框架构建一个简易的四则运算计算器。通过采用DispatchAction来处理不同类型的计算请求,并使用动态Form来优化开发流程,确保代码的简洁性和可维护性。同时,系统提供了用户友好的错误提示,以增强用户体验。 ... [详细]
  • 本文深入解析了WCF Binding模型中的绑定元素,详细介绍了信道、信道管理器、信道监听器和信道工厂的概念与作用。从对象创建的角度来看,信道管理器负责信道的生成。具体而言,客户端的信道通过信道工厂进行实例化,而服务端则通过信道监听器来接收请求。文章还探讨了这些组件之间的交互机制及其在WCF通信中的重要性。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 在Ubuntu系统中安装Android SDK的详细步骤及解决“Failed to fetch URL https://dlssl.google.com/”错误的方法
    在Ubuntu 11.10 x64系统中安装Android SDK的详细步骤,包括配置环境变量和解决“Failed to fetch URL https://dlssl.google.com/”错误的方法。本文详细介绍了如何在该系统上顺利安装并配置Android SDK,确保开发环境的稳定性和高效性。此外,还提供了解决网络连接问题的实用技巧,帮助用户克服常见的安装障碍。 ... [详细]
  • 在 Vue 应用开发中,页面状态管理和跨页面数据传递是常见需求。本文将详细介绍 Vue Router 提供的两种有效方式,帮助开发者高效地实现页面间的数据交互与状态同步,同时分享一些最佳实践和注意事项。 ... [详细]
author-avatar
挖墙找红杏000
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有