一、常用的Nginx 正则表达式
![rewrite与location Nginx重写功能](http://img.zhejianglong.com/231020/000U61N6-0.png)
文章插图
二、访问路由location2.1location的分类location 大致可以分为三类:
- 精准匹配:location = / {}
- 一般匹配:location / {}
- 正则匹配:location ~ / {}
![rewrite与location Nginx重写功能](http://img.zhejianglong.com/231020/000UB630-1.png)
文章插图
2.3location 优先级
- 首先精确匹配 =
- 其次前缀匹配 ^~
- 其次是按文件中顺序的正则匹配 或*
- 然后匹配不带任何修饰的前缀匹配
- 最后是交给 / 通用匹配
优先级总结:(location =) > (location 完整路径) > (location ^~ 路径) > (location ,* 正则顺序) > (location 部分起始路径) > (location /)location匹配首先看优先级:精确>前缀>正则>一般>通用优先级相同:正则看上下顺序,上面的优先;一般则看长度,最长匹配优先精确、前缀、正则、一般都没有匹配到就看通用
2.5实际网站使用中的三个匹配规则定义2.5.1 第一个必选规则
直接匹配网站根,通过域名访问网站首页比较频繁,使用这个会加速处理,比如说官网 。这里是直接转发给后端应用服务器了,也可以是一个静态首页 。
location = / { proxy_pass http://tomcat_server/;}2.5.2 第二个必选规则是处理静态文件请求
这是nginx作为http服务器的强项!有两种配置模式,目录匹配或后缀匹配,任何其一或搭配使用 。
location ^~ /static/ { root /webroot/static/;}location ~* \.(html|gif|jpg|jpeg|png|css|js|ico)$ { root /webroot/res/;}2.5.3 第三个规则就是通用规则
比如用来转发带.php、.jsp后缀的动态请求到后端应用服务器 。非静态文件请求就默认是动态请求 。
location / { proxy_pass http://tomcat_server;} 三、访问重新rewrite3.1rewrite的概述rewrite功能就是 , 使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向 。rewrite只能放在server{},location{},if{}中,并且默认只能对域名后边的除去传递的参数外的字符串起作用 。
例如:http://www.fzr.com/zzj/index.php?id=1&u=str 只对/zzj/index.php重写 。
3.2rewrite 执行顺序如下(1) 执行 server 块里面的 rewrite 指令(2) 执行 location 匹配(3) 执行选定的 location 中的 rewrite 指令语法: rewrite [flag];
- regex :表示正则匹配规则
- replacement :表示跳转后的内容
- flag :表示 rewrite 支持的 flag 标记