程序笔记   发布时间:2022-07-13  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了rewrite和localhost大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

LOCATIOn:

对比LOCATIOn和rewrite

从功能上看rewrite 和 LOCATIOn 似乎优点像,都能实现跳转,主要区别在于 rewrite 是在同一个域名内更改获取资源的路径,而LOCATIOn 是对一类路径控制访问反向代理,还可以proxy_pass 到其他机器

LOCATIOn:用于匹配用户访问请求的URL,来使用哪一个目录中的网页资源

rewrite ... peRMANent:修改url后重定向再次请求访问

rewrite   /weihu.html    按照修改域名后的url直接跳转到对应的LOCATIOn

rewrite 如果对全url重写,重写部分就要以http://...

            如果不以http://...  开始重写,默认只对域名后传递参数前的部分重写

LOCATIOn 分为三大类:

LOCATIOn 常用的匹配规则:

=:进行普通字符精确匹配,也就是完全匹配

^~:表示普通字符匹配。使用前缀匹配。如果匹配成功,则不再匹配其他LOCATIOn

~:区分大小写的匹配

~*:不区分大小写的匹配

!~:区分大小写的匹配取非

!~*:不区分大小写的匹配取非

LOCATIOn优先级:

首先精确匹配 =

其次前缀匹配 ^~

其次是按文件中的顺序的正则匹配~或~*

然后匹配不带任何修饰的前缀匹配

最后交给/通用匹配

LOCATIOn示例说明:

(1)LOCATIOn = /  {...}

=为精确匹配 / ,主机名后面不能到任何字符串,比如访问 / 和 /date , 则 / 匹配,/date 不匹配

再比如 LOCATIOn = /abc,则只匹配/abc,/abc/ 或 /abcd 不匹配 。若 LOCATIOn /abc , 则即匹配/abc 、/abcd/ 同时也匹配

(2)LOCATIOn / {...}

因为所有的地址都以 / 开头,所以这条规则匹配将匹配到所有的请求 比如访问 / 和 /date,则 / 匹配,/date 也匹配

但若后面是正则表达式会和最长字符串优先匹配(最长匹配

(3)LOCATIOn /documents/ {}

匹配任何以/documents/开头的地址,匹配符合以后,还要继续往下搜索其他LOCATIOn

只有其他LOCATIOn后面的正则表达式没有匹配到时,才会采用这一条

(4)LOCATIOn /documents/abc {}

匹配任何以/documents/abc开头的地址,匹配符合以后,还要继续往下搜索其他LOCATIOn

只有其他LOCATIOn 后面的正则表达式没有匹配到时,才会采用这一条

(5)LOCATIOn ^~ /images/ {}

匹配任何以 /images/ 开头的地址,匹配符合以后,停止往下搜索正则,采用这一条

(6)LOCATIOn ~*  .(gif|jpg|jpeg)$ {}

匹配所有以gif 、jpg或jepg结尾的请求

然而,所有请求 .images/ 下的图片会被 LOCATIOn ^~ /images/ 处理,因为^~ 的优先级更高,所以到达不了这一条正则

(7)LOCATIOn /images/abc {}

最长字符匹配到/images/abc,优先级最低,继续往下搜索其他LOCATIOn,会发现^~ 和 ~ 存在

(8)LOCATIOn ~ /images/abc {}

匹配以/images/abc 开头的,优先级次之,只有去掉LOCATIOn ^~ /images/ 才会采用这一条

(9)LOCATIOn /images/abc/1.html {}

匹配/images/abc/1.html 文件,如果和正则LOCATIOn ~ /images/abc/1.html  相比,正则优先级更高

实际网站使用中,至少有三个匹配规则定义:

第一个必选规则:

直接匹配网站根,通过域名访问网站首页比较频繁,使用这个会加速处理,比如说官网

可以是一个静态首页,也可以是直接转发给后端应用服务器

 

rewrite和localhost

 

 第二个必选规则是处理静态文件请求,这是nginx作为http服务器的强项

有两种配置模式,目录匹配或后缀匹配,任选其一或搭配使用

rewrite和localhost

 

rewrite和localhost

 

 第三个规则就是通用规则

比如用来转发带.php、.jsp后缀的动态请求到后端应用服务器

非静态文件请求就默认是动态请求

rewrite和localhost

 

 rewrite:

rewrite的功能:

使用Nginx提供的全局变量或自己设置的变量,结合正则表达式和标记位实现URL重写以及重定向。

比如:更换域名后需要保持旧的域名能跳转到新的域名上、某网页发生改变需要跳转到新的页面、网页防盗链等等需求

 

rewrite只能放在server{},LOCATIOn{},if{}中,并且默认只能对域名后边的除去传递参数外的字符串起作用

例如:http://www.zyp.com/abc/bbs/index.php?a=1&b=2 只对/abc/bbs/index.php重写

rewrite跳转实现:

  • Nginx:通过ngx_http_rewrite_module 模块支持URL重写、支持if条件判断,但不支持else@H_801_52@
  • 跳转:从一个LOCATIOn 跳转到另外一个LOCATIOn,循环最多可以执行10次,超过后nginx将返回500错误@H_801_52@
  • PCRE支持:perl兼容正则表达式的语法规则匹配@H_801_52@
  • 重写模块set 指令:创建新的变量并设其值@H_801_52@

rewrite执行顺序如下:

  1. 执行server块里面的rewrite指令@H_801_52@
  2. 执行LOCATIOn匹配@H_801_52@
  3. 执行选定的LOCATIOn中的rewrite指令@H_801_52@

语法格式:rewrite <regex> <replacement> [flag]

  • regex:表示正则匹配规则@H_801_52@
  • replacement:表示跳转后的内容@H_801_52@
  • flag:表示rewrite支持的flag标记@H_801_52@

flag标记说明:

  • last:本条规则匹配完成后,继续向下匹配新的LOCATIOn URL规则,一般用在server 和 if 中@H_801_52@
  • break:本条规则匹配完成即终止,不再匹配后面的任何规则,一般使用在LOCATIOn中@H_801_52@
  • redirect:返回302临时重定向,浏览器地址会显示跳转后的URL地址@H_801_52@
  • peRMANent:返回301永久重定向,浏览器地址栏会显示跳转后的URL地址@H_801_52@

(1)rewrite基于域名的跳转

rewrite和localhost

 

 

rewrite和localhost

 

 

rewrite和localhost

 

 (2)基于客户端IP访问跳转

rewrite和localhost

 

rewrite和localhost

 

rewrite和localhost

 

rewrite和localhost

 

 (3)基于旧域名跳转到新域名后面加目录

rewrite和localhost

 

 

rewrite和localhost

 

 (4)基于参数匹配的跳转

rewrite和localhost

 

 (5)基于目录下所有php结尾的文件跳转

rewrite和localhost

 

 (6)基于最普通一条url请求的跳转

rewrite和localhost

 

大佬总结

以上是大佬教程为你收集整理的rewrite和localhost全部内容,希望文章能够帮你解决rewrite和localhost所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。