文章插图
Nginx的静态处理能力很强 , 但是动态处理能力不足 , 因此 , 在企业中常用动静分离技术 。动静分离技术其实是采用代理的方式 , 在server{}段中加入带正则匹配的location来指定匹配项 , 在Nginx的配置中 , 是通过location配置段配合正则匹配实现静态与动态页面的不同处理方式 。
nginx location的正则法则:
~ 为区分大小写的匹配 。
~* 不区分大小写的匹配(匹配firefox的正则同时匹配FireFox) 。
!~ 不匹配的
!~* 不匹配的
. 匹配除换行符以外的任意字符
location 匹配的优先级(与location在配置文件中的顺序无关)
= 精确匹配会第一个被处理 。如果发现精确匹配 , nginx停止搜索其他匹配 。
普通字符匹配 , 正则表达式规则和长的块规则将被优先和查询匹配 , 也就是说如果该项匹配还需去看有没有正则表达式匹配和更长的匹配 。
^~ 则只匹配该规则 , nginx停止搜索其他匹配 , 否则nginx会继续处理其他location指令 。
最后匹配理带有"~"和"~*"的指令 , 如果找到相应的匹配 , 则nginx停止搜索其他匹配;当没有正则表达式或者没有正则表达式被匹配的情况下 , 那么匹配程度最高的逐字匹配指令会被使用 。
我之前走了岔路 , 想用Application相对路径+文件路径的正则来匹配 , 调试了半天都没有通过 。在线的正则匹配不支持nginx的规则 。
经同事提醒 , 可以使用文件的相对路径正则+root到相应静态文件的目录 , 例如
root /home/www/static/show;而不是location的正则 。
参考文献:
https://www.jianshu.com/p/4a3dd77fe3e5
http://blog.csdn.net/gzh0222/article/details/7845981
http://blog.csdn.net/kobejayandy/article/details/20805059
【nginx实现动静分离实战】
推荐阅读
- Nginx 搭建图片服务器
- 推荐一款nginx+redis+ehcache高并发与高可用缓存架构
- Redis实现统计网站访问人数的功能
- 使用python构建递归算法,实现查找电脑中的所有文件
- Windows网盘搭建并实现局域网文件共享
- 如何用Redis实现购物车的增删改和清空
- java 24点算法实现
- Go语言实现LeetCode算法:移除链表末尾起第N个节点
- 简单web服务器的实现思路
- Java架构-如何设计实现真正的响应式微服务系统?