nginx 中rewrite跳转的使用方法介绍和配置Rewrite跳转连接

一、Rewrite用法介绍

1. Rewrite跳转场景

1、可以调整用户浏览的URL,看起来更规范,合乎开发及产品人员的需求,
2、为了让搜索引擎搜录网站内容及用户体验更好,企业会将动态URL地址伪装成静态地址提供服务。
3、网址换新域名后,让旧的访问跳转到新的域名上。例如,访问京东的360buy.com会跳转到jd.com.
4、根据特殊变量、目录、客户端的信息进行URL调整等。

2.Rewrite跳转实现

Nginx是通过ngx_http_rewrite_module模块支持url重写、支持if条件判断,但不支持else。另外该模块需要PCRE支持,应在编译Nginx时指定 PCRE支持,默认已经安装。根据相关变量重定向和选择不同的配置,从一个location跳转到另一个location,不过这样的循环最多可以执行10次,超过后Nginx将返回500错误。同时,重写模块包含set指令,来创建新的变量并设l其值,这在有些情景下非常有用的,如记录条件标识、传递参数到其他location、记录做了什么等等。rewrite功能就是,使用Nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url的重写以及重定向。

3.Rewrite实际场景

在实际工作场景,Nginx跳转需求有三种方式可实现。

  1. 可以直接用rewrite进行匹配跳转
  2. 也可以使用if匹配全局变量后跳转
  3. 另外还可以使用location匹配再跳转
    所以rewrite只能放在server{},if{},location{}段中
    location只能对域名后边的除去传递的参数外的字符串起作用

二、Rewrite语法格式

1、Rewrite命令格式

在这里插入图片描述

2、支持的常用正则表达式元字符

在这里插入图片描述

3、跳转后的内容

通常为跳转到的网页或网站的url域名地址路径信息。

4、flag标记

4.1、flag标记说明在这里插入图片描述
4.2、last标记和break标记的的比较
在这里插入图片描述

三、location匹配规则

1、location的使用分类

在这里插入图片描述

2、location的正则匹配的常用表达式

在这里插入图片描述

3、location匹配的优先级

在这里插入图片描述

4、location优先级的示例

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

5、rewrite和location的比较

在这里插入图片描述

四、基于域名IP等方式跳转的配置

服务器端已经部署好nginx服务。客户端已经做好域名解析服务。

域名解析的配置文件位置:
Linux的hosts文件路径为:/etc/hosts
window的hosts文件路径为:C:\Windows\System32\drivers\etc\hosts

1、基于域名的跳转

现在公司旧域名www.wlm.com有业务需求有变更,需要使用新域名www.wat.com代替。但是旧域名不能废除,需要跳转到新域名上。具体的配置情况如下。

[root@Nginx ~]# vim /usr/local/nginx/conf/nginx.conf
server {           
        listen       80;
        server_name  www.wlm.com;
        charset utf-8;
        access_log  /var/log/nginx/wlm.access.log;
    location / {
            root   html;
            index  index.html index.htm;
    if ($host = 'www.wlm.com'){     //如果你输入这个网站
   rewrite ^/(.*)$ http://www.wat.com/$1 permanent;
   //跳转到另一个网站的任何位置
}   
        }

基于域名的跳转测试
在这里插入图片描述
实现了跳转
在这里插入图片描述

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

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

[root@Nginx ~]# vim /usr/local/nginx/conf/nginx.conf
server {           
        listen       80;
        server_name  www.wlm.com;
        charset utf-8;
   access_log  /var/log/nginx/wlm.access.log;
set $rewrite true;
if ($remote_addr = '20.0.0.1'){
set $rewrite false;
}
if ($rewrite = true){
rewrite (.+) /wh.html;
}
location = /wh.html {
root  /usr/local/nginx/html/;
}
[root@Nginx ~]# cd /usr/local/nginx/html/
[root@Nginx html]# vim wh.html
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
</head>
<body>
<h1>维护   中</h1>
</body>
</html>

测试结果
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/wulimingde/article/details/108453805