Nginx Rewrite使用场景及代码案例详解
NginxRewrite使用场景
1.URL地址跳转,例如用户访问pm.com将其跳转到baidu.com或者当用户通过http的方式访问时,将其跳转至https的方式访问。
2.URL伪静态,将动态页面显示为静态页面方式的一种技术,减少动态URL地址对外暴露过多的参数,提升更高的安全性。
3.搜索引擎SEO优化依赖于URL路径,以便支持搜索引擎录入
4.可以调整用户浏览的URL,看起来更规范,合乎开发及产品人员的需求。
配置语法
rewriteregexreplacement[flag];
4种flag
last停止处理后续rewrite指令集,跳出location作用域,并开始搜索与更改后的URI相匹配的location,URL地址不变
break停止处理后续rewrite指令集,不会跳出location作用域,不再进行重新查找,终止匹配,URL地址不变
redirect返回302临时重定向,浏览器地址栏会显示跳转后的URL地址,爬虫不会更新自己的URL数据库
permanent返回301永久重定向,浏览器地址栏会显示跳转后的URL地址,爬虫会更新自己的URL数据库
注:使用last和break时浏览器中的地址不会改变,使用redirect和permanent则会改变
举例说明:
location/abc/{ rewrite^/abc/(.*)/whsir/$1break; return401; } location/opq/{ rewrite^/opq/(.*)/whsir/$1last; return402; } location/whsir/{ return403; }
输入abc后,如果能匹配到whsir的内容,则返回200,否则返回404
输入opq后,如果能匹配到whsir的内容,则返回403,否则返回404
last和break只返回一个状态码即成功或失败,redirect和permanent会先返回302或301,在返回成功或失败
常用的Nginx全局变量:
例:http://www.pm.com:99/aa/bb/test.php
$hostwww.pm.com
$server_port99
$request_uri/aa/bb/test.php
$document_root/pm_code
$request_filename/pm_code/aa/bb/test.php
案例1:外部跳转
打开lb01虚拟机,先将之前的自定义配置文件关闭,新建/etc/nginx/conf.d/rewrite.conf
注:^/意思为以根(这里根目录为/pm_code,对应域名为www.pm.com)开头的url都会重定向到百度。
修改/etc/nginx/nginx.conf文件
将错误日志级别修改为notice使其能记录到重定向信息(debug,info,notice,warn,error,crit越靠前记录的信息越多)
在http模块中添加一行
rewrite_logon;(打开rewrite日志记录)
测试
在浏览器地址栏中输入www.pm.com(在hosts中已配置好),会重定向到百度首页
案例2:内部跳转
更改/etc/nginx/conf.d/rewrite.conf内容
在/pm_code中创建文件2.html(内容222),在浏览器中输入www.pm.com/1.html
在错误日志中查看记录
使用return
在上述方法中,浏览器地址栏中显示的是1.html,而网页内容是2.html的内容,如果想要地址栏中也显示2.html,将location中的内容更改为return302/2.html;或者rewrite.*/2.htmlredirect;
使用正则
例:将www.pm.com/2020/*重定向到www.pm.com/2019/*
括号代表一个整体,$1代表前面第一个括号内的内容
将http跳转到https
注:nginx1.14版本后可以不用写sslon了,listen那里写成listen443ssl;
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。