目录

一,rewhite跳转场景

二,nginx实际场景

三,nginx正则表达式

1,语法格式

四,location

1,location可以分为三类

2,location

3,location 匹配优先级

五,location 示例说明

1,location优先级是怎么样的

六,在实际网络使用中,至少有三个匹配规则定义

七,实验

一,基于域名的跳转

二,基于客户端ip地址的跳转

三,基于旧域名跳转到新域名后面加目录

四,基于目录下所以php结尾的文件跳转

五,基于最普通的一条url请求的跳转


一,rewhite跳转场景

1,URL看起来更加规范,合理

2,企业会将动态URL地址伪装成静态地址提供服务

3,网址换新域名后,让旧的访问跳转到新的域名上

4,服务端某些业务调整

二,nginx实际场景

Nginx跳转需求的实现方式

  • 使用rewhite进行匹配跳转
  • 使用if匹配全局变量后跳转
  • 使用location匹配再跳转

rewhite放在server{},if{},location{}段中

  • location只对域名后边的除去传递参数外的字符起作用

对域名或参数字符串

  • 使用if全局变量匹配
  • 使用proxy_pass反向代理

三,nginx正则表达式

^ :匹配输入字符串的起始位置
$ :匹配输入字符串的结束位置
* :匹配前面的字符零次或多次。如“ol*”能匹配“o”及“ol”、“oll”
+ :匹配前面的字符一次或多次。如“ol+”能匹配“ol”及“oll”、“olll”,但不能匹配“o”
? :匹配前面的字符零次或一次,例如“do(es)?”能匹配“do”或者“does”,”?”等效于”{0,1}”
. :匹配除“\n”之外的任何单个字符,若要匹配包括“\n”在内的任意字符,请使用诸如“[.\n]”之类的模式
\ :将后面接着的字符标记为一个特殊字符或一个原义字符或一个向后引用。如“\n”匹配一个换行符,而“\$”则匹配“$”
\d :匹配纯数字
\w :匹配字母或数字或下划线或汉字
\s :匹配任意的空白符
\b :匹配单词的开始或结束
{n} :重复 n 次
{n,} :重复 n 次或更多次
{n,m} :重复 n 到 m 次
[] :定义匹配的字符范围
[c] :匹配单个字符 c
[a-z] :匹配 a-z 小写字母的任意一个
[a-zA-Z0-9] :匹配所有大小写字母或数字
() :表达式的开始和结束位置 例如(jpg|gif|swf)
| :或运算符

1,语法格式

rewrite  <regex> <replacement> [flag];

last  相当于apache的L标记,表示完成rewrite

break 本地规则匹配,完成即终止,不在匹配后面的任何规则

redirect 返回302临时重定向,浏览器地址会显示跳转后的URL地址,爬虫不会更新3URL

permanent 返回301永久重定向,浏览器地址栏会显示跳转后的

四,location

1,location可以分为三类

精确匹配;location = / {......}一般匹配:location /{...}正则匹配: location ~ / {...}

2,location

=   :进行普通字符精确匹配,也就是完全匹配。
^~  :表示普通字符匹配,使用前缀匹配,如果匹配成功,则不再匹配其它location
~   :区分大小写的匹配
~*  :不区分大小写的匹配
!~  :区分大小写的匹配取非
!~* :不区分大小写的匹配取非

3,location 匹配优先级

相同类型的表达式,字符串长的会优先匹配
按优先级排列首先精确匹配  =
其次前缀匹配  ^~
其次按文件中顺序的正则匹配 ~或~*
然后匹配不带任何修饰符的前缀匹配
最后是交给 / 通用匹配

五,location 示例说明

① location = / {}

=为精准匹配 / ,主机名后面不能带任何字符串,比如访问 / 和 /data ,则 / 匹配 ,/data 不匹配。再比如 location = /abc ,则只匹配/abc,/abc/或/abcd 不匹配。若location /abc ,则匹配 /abc 、/abcd/ 、/abc/。

② location / {}

因为所有的地址都是以 / 开头,所以这条规则将匹配到所有普请求,比如访问 / 和 /data ,则 / 匹配,/data 也匹配。 但若后面还有正则表达式和最长字符,则优先匹配(最长匹配)

③location /documents/ {}

匹配任何以 /documents/ 开头的地址,匹配符合以后,还要继续往下搜索其它 location,只有其它 location 后面的正则表达式 没有匹配到时,才会采用这一条。

④location /documents/abc {}

匹配任何以 /documents/abc 开头的地址,匹配符合以后,还要继续往下搜索其它 location ,只有其它 location 后面的正则表达式没有匹配到时,才会采用这一条。

⑤ location ^~ /images/ {}

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

⑥ location ~ .(gif|jpg|jpeng)$ {}*

匹配所有以gif、jpg或jpeng结尾的请求,然而,所有请求 /images/ 下的图片会被 location ^~ /images/ 处理,因为^~ 的优先级更高,所以到达不了这一条正则。

⑦ location /images/abc {}

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

⑧ location ~ /images/abc {}

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

⑨ location /images/abc/1.html {}

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

1,location优先级是怎么样的

匹配某个具体文件
(location =完整路径) > (location ^~完整路径) > (location ~*完整路径) > (location ~完整路径) >
(location完整路径) > (location /)
location ~★完整路径> location ~完整路径/path
正则:原则精确度自定义一》为了尽量的节省资源
Path
path
PATH
更容易被定位到用目录做匹配访问某个目录
(location =目录) > (location ^~目录/) > (location ~目录) > (location ~★目录) > (location 目录) >
(location /)
正则:原则精确度自定义--》为了尽量的节省资源
Path
install.html引导文件
path
install/bbs.html
PATH
install/ index . html
www . kgc. com/ Path/文件目录为什么只会在区不区分大小写上会有变动
正则表达式:日的是为了尽量精确的匹配
文件一》尽量精确匹配,区分大小写精确、不区分更为精确
日录一-》 尽量精确匹配,区分大小写精确优先级更高,不区分大小写的
Path
install.html引导文件
path
install/bbs.html
PATH
install/ index . html
www . kgc. com/ Path/

六,在实际网络使用中,至少有三个匹配规则定义

#第一个必选规则
直接匹配网站根,通过域名访问网站首页比较频繁(www.baidu.com/),使用这个会加速处理,比如说官网。
可以是一“个静态首页,也可以直接转发给后端“应用服务器”一》PHP 、Apache
location / {
root    html;
index index.html index. htm;}#第二个必选规则是处理静态文件请求,这是nginx作为http服务器的强项(1、静态请求处理的能力+高并发处理能力+资源消耗较低)
有两种配置模式,日录匹配或后缀匹配,任选其一或搭配使用
location ^~ /static/ {
root / webroot/static/ ;}location ~* \. (html IIgif I1jpg ljpeglpng1cssljslico)$ {
root /webroot/res/ ;
}#*★.第三个规则就是通用规则,比如用来转发带.php、.jsp后缀的动态请求到后端应用服务器
非静态文件请求就默认是动态请求(跳转/反向代理)
upstream     tomcat_ server.{
server 192. 168.226.128:8080 weight 1;
server 192.168.226.132:8080 weight 1;}location   ^/ \. (phpljsp)$ {
proxy_ pass http: I I tomgat_ server:}根“/"匹配一》匹配首页
静态资源匹配
动态跳转的匹配,是第三类必要匹配规则

七,实验

一,基于域名的跳转

现在公司旧域名www.cxk.com有业务需求变更,需要使用性域名www.kya.com代替,但是旧域名不能废除,需要跳转到新的域名上,而且后面的参数保持不变(路径

添加映射

创建日志目录

创建日志目录

[root@kya conf]# cd /var/log/nginx/ [root@kya nginx]# ll 总用量 4 -rw-r--r--. 1 root root 3780 8月 14 16:03 test.com-accss.log-20220813

location /{ if ($host = 'www.cxk.com') { rewrite ^/(.*)$ http://www.kya.com/$1 permanent;进行跳转,并将前面的匹配结果赋值个$1)

}

在html里面创建一个test.html

-rw-r--r--. 1 root root 15 8月 16 01:00 test.html [root@kya html]# cat test.html this is a test [root@kya html]#

二,基于客户端ip地址的跳转

今天公司业务新版本上线,要求所以外部来访,ip访问如何内容都显示一个固定维护页面,只有公司内部ip192.168.135.112访问正常。

vim /usr/local/nginx/conf/

set $rewrite true;
       if ($remote_addr = "192.168.135.112") {
        set $rewrite false;
}
       if ($rewrite = true) {
       rewrite (.+) /weihu.html;
}
       location = /weihu.html {
       root /var/www/html;
}

 测试

用其他ip访问会被指向weihu.html

 使用可以通过的ip,可以正常访问

 进入日志文件,查看日志

三,基于旧域名跳转到新域名后面加目录

当访问的是http://bbs.kgc.com/msds/1.html 会自动跳转到 Loading...

创建指定目录

 添加映射

 验证

四,基于目录下所以php结尾的文件跳转

要求访问 Loading... 跳转到首页www.kya.com (场景:注册,登录

 直接跳转到www.kya.com

五,基于最普通的一条url请求的跳转

直接跳转到www.kya.com

Nginx--Rewrite重写相关推荐

  1. Nginx rewrite ——重写跳转

    目录 一.Nginx常见模块 二.常用的Nginx正则表达式 三.local概述 3.1 local分类 3.2 local 常用的匹配规则 3.3 local 优先级 3.4 location 示例 ...

  2. nginx rewrite重写与防盗链配置

    nginx rewrite重写规则与防盗链配置方法 时间:2016-02-04 15:16:58来源:网络 导读:nginx rewrite重写规则与防盗链配置方法,rewrite规则格式中flag标 ...

  3. Nginx Rewrite重写

    Rewrite基本概述 什么是Rewrite Rewrite主要实现url地址重写,以及重定向,就是把传入Web的请求重定向到其他URL的过程. Rewrite使用场景 地址跳转,用户访问www.na ...

  4. nginx rewrite重写uri

    1.根据ip地址转发并重写uri location /cms/v35 {if ($remote_addr ~ "210.12.41.66"){rewrite ^/cms/v35/( ...

  5. Nginx URL重写(rewrite)配置及信息详解

    URL重写有利于网站首选域的确定,对于同一资源页面多条路径的301重定向有助于URL权重的集中 Nginx URL重写(rewrite)介绍 和apache等web服务软件一样,rewrite的组要功 ...

  6. Nginx之正则表达式、location匹配简介以及rewrite重写

    目录 一.Nginx 正则表达式 二.location 匹配简介 1.匹配规则格式 ①.精准匹配 ②.一般匹配 ③.正则匹配 2.常用的匹配规则 3.匹配的优先级 4.示例 5.实际网站使用中,至少有 ...

  7. Nginx中的location规则与rewrite重写(详解)

    内容预知 1.Nginx中location与rewrite 1.1 location与rewrite常用的正则表达式 1.2  location与rewrite的联系和区别 2.location的匹配 ...

  8. Nginx的location匹配与rewrite重写跳转

    目录 Nginx的location匹配与rewrite重写跳转 一.常用的Nginx正则表达式 二.location 分类 location常用的匹配规则 优先级 location示例说明 Rewri ...

  9. Nginx Rewrite规则初探

    Nginx  rewrite(nginx url地址重写) Rewrite 主要的功能就是实现URL的重写,Nginx的Rewrite规则采用Pcre,perl兼容正则表达式的语法规则匹配,如果需要N ...

  10. Nginx系列二:(Nginx Rewrite 规则、Nginx 防盗链、Nginx 动静分离、Nginx+keepalived 实现高可用)...

    一.Nginx Rewrite 规则 1. Nginx rewrite规则 Rewrite规则含义就是某个URL重写成特定的URL(类似于Redirect),从某种意义上说为了美观或者对搜索引擎友好, ...

最新文章

  1. cisco路由器基本实验之三 动态路由之RIP协议的配置(Boson NetSim)
  2. 【风控模型】Logistic算法构建标准信用评分卡模型python代码案例
  3. c语言 char转int_图文并茂,一文讲透C语言结构体内存对齐
  4. BZOJ2705 [SDOI2012]Longge的问题 欧拉函数
  5. 程序猿 - 超实用的工具、素材、学习网站分享
  6. python处理一个文件夹下的所有文件并保存在新的文件夹
  7. 华为手机明年全面升级鸿蒙OS:其实两年前就能用
  8. Android系统启动过程详解
  9. 使用C#如何写入/读取注册表信息
  10. html+css做圆角表格
  11. SQL datediff()函数 时间差
  12. UVa 11572 Unique snowflakes【滑动窗口】
  13. 【接口测试用例设计思路】
  14. 只用70行代码,手把手教你遍历当前windows所有进程!
  15. Altium Designer(二)——原理图(SchDoc)的绘制
  16. 排序算法九:基数排序
  17. PMP、软考高项、CPMP,这三个的备考顺序应当是怎么样的?
  18. Fliqlo官网下载
  19. 证券期货基础知识 计算机,2020国考中国证监会专业科目考试大纲(计算机类)...
  20. OV7670摄像头的相关参数及时序分析

热门文章

  1. IP地址分类及子网划分
  2. ajax用户名注册自动刷新,ajax+jsp实现 无刷新页面下注册时检测用户名是否已存在...
  3. 机器学习:从决策树到xgboost
  4. 4--STM32RCC时钟树
  5. 圣诞树代码(python)
  6. [论文笔记|VIO]ICE-BA: Incremental, Consistent and Efficient Bundle Adjustment for Visual-Inertial SLAM
  7. 浪潮森林防火智能监控解决方案
  8. 综测仪 之 IQxel使用方法介绍
  9. Ubuntu下安装Luma qq
  10. lumaQQ移植到Android之重构篇