Nginx Rewrite模块配置

一、Rewrite概述

1.1、Rewrite跳转场景

■ URL看起来更规范、合理
■ 企业会将动态URL地址伪装成静态地址提供服务
■ 网址换新域名后,让旧的访问跳转到新的域名上
■ 服务端某些业务调整

1.2、Rewrite跳转实现

在这里插入图片描述

1.3、Rewrite实际场景

■ Nginx跳转需求的实现方式

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

■ rewrite放在server{},if{}, location{} 段中

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

■ 对域名或参数字符串

● 使用if全局变量匹配
● 使用proxy_pass反向代理
(实现动静分离,将流量引入给别人)通过rewrite模块实现

1.4、Nginx正则表达式

在这里插入图片描述

二、Rewrite命令

2.1、Rewrite命令语法

在这里插入图片描述

2.2、flag标记说明

在这里插入图片描述
注:
redirect 重定向A到B 爬虫捕获A 临时重定向
permanent 重定向A到B 爬虫捕获B 永久重定向

2.3、last和break比较

在这里插入图片描述

三、location概述

3.1、分类

location = patt {} [精准匹配]
location patt {} [一般匹配]
location ~ patt {} [正则匹配]

3.2、正则匹配的常用表达式

在这里插入图片描述

3.3、location优先级

■ 相同类型的表达式,字符串长的会优先匹配

■ 按优先级排列

● = 类型
● ^~ 类型表达式
● 正则表达式(*) 类型
● 常规字符串匹配类型,按前缀匹配
● 通用匹配(/) ,如果没有其它匹配,任何请求都会匹配到

3.4、比较rewrite和location

■ 相同点

● 都能实现跳转

■ 不同点

● rewrite是在同一域名内更改获取资源的路径
● location是对一类路径做控制访问或反向代理,还可以proxy_pass到其他机器

■ rewrite会写在location里,执行顺序

● 执行server块里面的rewrite指令
● 执行location匹配
● 执行选定的location中的rewrite指令

3.5、location优先级规则

■ 匹配某个具体文件

● (location = 完整路径) > (location ^~ 完整路径) > (location ~* 完整路径) =(location ~ 完整路径) > (location 完整路径) >(location /)

■ 用目录做匹配访问某个文件

● (location = 目录) > (location ^~ 目录/) > (location ~ 目录) =(location ~* 目录) > (location 目录) > (location /)

四、配置实例

安装Nginx服务

■ 步骤

● 安装nginx源
● 安装nginx软件包
● 修改默认站点配置文件:etc/nginx/conf.d/default.conf
● 启动nginx

■ 注意

● 确定域名可以正常解析
● 做下一个场景前,要删除上一个场景的配置
● 及时清除浏览器缓存

4.1、基于域名的跳转实验

实验需求: 公司旧域名www.domain.com,因业务需求有变更,需要使用新域名www.newdomain.com代替,不能废除旧域名,从旧域名跳转到新域名,且保持其参数不变

4.2、修改默认站点配置文件

[root@server1 ~]# vi /etc/nginx.conf

在这里插入图片描述
在这里插入图片描述

4.3、定义日志格式,定义站点的根,创建一个目录

在这里插入图片描述

[root@server1 ~]# mkdir /var/log/nginx
[root@server1 ~]# mkdir -p /usr/share/nginx/html
[root@server1 ~]# echo "this is my test web." > /usr/share/nginx/html/index.html
[root@server1 ~]# cat /usr/share/nginx/html/index.html
this is my test web.

4.4、进入windows配置文件修改

在这里插入图片描述

4.5、重启服务,打开网页进行抓包,进行效果验证

[root@server1 ~]# systemctl stop nginx
[root@server1 ~]# systemctl start nginx

在这里插入图片描述
在这里插入图片描述

5、基于客户端IP访问跳转

实验需求:今天公司业务版本上线,所有IP访问任何内容都显示一个固定维护页面,只有公司IP访问正常

5.1、进入配置文件进行域名捆绑

[root@server1 ~]# vi /etc/hosts

在这里插入图片描述

[root@server1 ~]# vi /etc/nginx.conf 

在这里插入图片描述

5.2、重启服务,修改需要重定向的网页

[root@server1 ~]# systemctl stop nginx
[root@server1 ~]# systemctl start nginx
[root@server1 ~]# vi /usr/share/nginx/html/maintenance.html

在这里插入图片描述

5.3、打开网页查看效果

在这里插入图片描述
在这里插入图片描述

6、应用场景一基于旧、 新域名跳转并加目录

将域名http://bbs.domain.com下面的发帖都跳转到http://www.domain.com/bbs,且域名跳转后保持参数不变

6.1、进入配置文件,进行文件修改

[root@server1 ~]# vi /etc/nginx.conf

在这里插入图片描述

6.2、创建bbs和post目录,并在post里添加内容

[root@server1 html]# mkdir -p bbs/post
[root@server1 html]# cd bbs/post
[root@server1 post]# ls -lh
[root@server1 post]# vi a.html

在这里插入图片描述

6.3、添加映射和配置文件,重启服务,打开网页查看效果

[root@server1 post]# cd
[root@server1 ~]# vi /etc/hosts
[root@server1 ~]# systemctl stop nginx
[root@server1 ~]# systemctl start nginx

在这里插入图片描述

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页