Nginx Rewrite使用场景及配置方法解析


Posted in Servers onApril 01, 2021

Nginx Rewrite使用场景

1.URL地址跳转,例如用户访问pm.com将其跳转到baidu.com或者当用户通过http的方式访问时,将其跳转至https的方式访问。

2.URL伪静态,将动态页面显示为静态页面方式的一种技术,减少动态URL地址对外暴露过多的参数,提升更高的安全性。

3.搜索引擎SEO优化依赖于URL路径,以便支持搜索引擎录入

4.可以调整用户浏览的URL,看起来更规范,合乎开发及产品人员的需求。

配置语法

rewrite regex replacement [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/$1 break;
  return 401;
}
location /opq/ {
  rewrite ^/opq/(.*) /whsir/$1 last;
  return 402;
}
location /whsir/ {
  return 403;
}

输入abc后,如果能匹配到whsir的内容,则返回200,否则返回404

输入opq后,如果能匹配到whsir的内容,则返回403,否则返回404

last和break只返回一个状态码即成功或失败,redirect和permanent会先返回302或301,在返回成功或失败

常用的Nginx全局变量:

例:http://www.pm.com:99/aa/bb/test.php

$host        www.pm.com

$server_port     99

$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

Nginx Rewrite使用场景及配置方法解析

注:^/意思为以根(这里根目录为/pm_code,对应域名为www.pm.com)开头的url都会重定向到百度。

修改/etc/nginx/nginx.conf文件

将错误日志级别修改为notice使其能记录到重定向信息(debug, info, notice, warn, error, crit越靠前记录的信息越多)

Nginx Rewrite使用场景及配置方法解析

在http模块中添加一行

rewrite_log on;(打开rewrite日志记录)

测试

在浏览器地址栏中输入www.pm.com(在hosts中已配置好),会重定向到百度首页

Nginx Rewrite使用场景及配置方法解析

案例2:内部跳转

更改/etc/nginx/conf.d/rewrite.conf内容

Nginx Rewrite使用场景及配置方法解析

在/pm_code中创建文件2.html(内容222),在浏览器中输入www.pm.com/1.html

Nginx Rewrite使用场景及配置方法解析

在错误日志中查看记录

Nginx Rewrite使用场景及配置方法解析

使用return

在上述方法中,浏览器地址栏中显示的是1.html,而网页内容是2.html的内容,如果想要地址栏中也显示2.html,将location中的内容更改为 return 302 /2.html; 或者 rewrite .* /2.html redirect;

使用正则

例:将www.pm.com/2020/* 重定向到 www.pm.com/2019/*

Nginx Rewrite使用场景及配置方法解析

括号代表一个整体,$1代表前面第一个括号内的内容

将http跳转到https

Nginx Rewrite使用场景及配置方法解析

注:nginx 1.14版本后可以不用写ssl on了,listen那里写成listen 443 ssl;

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Servers 相关文章推荐
Nginx tp3.2.3 404问题解决方案
Mar 31 Servers
Nginx已编译的nginx-添加新模块
Apr 01 Servers
Nginx缓存设置案例详解
Sep 15 Servers
详解nginx安装过程并代理下载服务器文件
Feb 12 Servers
解决xampp安装后Apache无法启动
Mar 21 Servers
CentOS安装Nginx并部署vue
Apr 12 Servers
Linux下使用C语言代码搭建一个简单的HTTP服务器
Apr 13 Servers
Window server 2012 R2 AD域的组策略相关设置
Apr 28 Servers
nginx rewrite功能使用场景分析
May 30 Servers
WinServer2012搭建DNS服务器的方法步骤
Jun 10 Servers
Windows7下FTP搭建图文教程
Aug 05 Servers
阿里云服务器(windows)手动部署FTP站点详细教程
Aug 05 Servers
Nginx解决403 forbidden的完整步骤
Apr 01 #Servers
详解nginx.conf 中 root 目录设置问题
Apr 01 #Servers
小程序后台PHP版本部署运行 LNMP+WNMP
扩展多台相同的Web服务器
Apr 01 #Servers
Nginx安装完成没有生成sbin目录的解决方法
nginx location优先级的深入讲解
Mar 31 #Servers
Nginx反爬虫策略,防止UA抓取网站
Mar 31 #Servers
You might like
php获取mysql版本的几种方法小结
2008/03/25 PHP
Zend Framework 2.0事件管理器(The EventManager)入门教程
2014/08/11 PHP
php使用函数pathinfo()、parse_url()和basename()解析URL
2016/11/25 PHP
PHP各种常见经典算法总结【排序、查找、翻转等】
2019/08/05 PHP
laravel框架的安装与路由实例分析
2019/10/11 PHP
jquery一句话全选/取消全选
2011/03/01 Javascript
JavaScript简单实现网页回到顶部功能
2013/11/12 Javascript
js禁止回车提交表单的示例代码
2013/12/23 Javascript
js读取csv文件并使用json显示出来
2015/01/09 Javascript
jQuery将所有被选中的checkbox某个属性值连接成字符串的方法
2015/01/24 Javascript
jQuery实现气球弹出框式的侧边导航菜单效果
2015/09/22 Javascript
浅析C/C++,Java,PHP,JavaScript,Json数组、对象赋值时最后一个元素后面是否可以带逗号
2016/03/22 Javascript
网络传输协议(http协议)
2016/11/18 Javascript
vue中如何引入jQuery和Bootstrap
2017/04/10 jQuery
Vue cli+mui 区域滚动的实例代码
2018/01/25 Javascript
[02:21]十步杀一人,千里不留行——DOTA2全新英雄天涯墨客展示
2018/08/29 DOTA
[08:53]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS 选手采访
2021/03/11 DOTA
Python cookbook(数据结构与算法)通过公共键对字典列表排序算法示例
2018/03/15 Python
Python使用pandas处理CSV文件的实例讲解
2018/06/22 Python
Python单向链表和双向链表原理与用法实例详解
2018/08/31 Python
使用Python将字符串转换为格式化的日期时间字符串
2019/09/01 Python
windows 10 设定计划任务自动执行 python 脚本的方法
2019/09/11 Python
win10下安装Anaconda的教程(python环境+jupyter_notebook)
2019/10/23 Python
python如何使用jt400.jar包代码实例
2019/12/20 Python
Python实现自动签到脚本功能
2020/08/20 Python
把富文本的回车转为br标签
2019/08/09 HTML / CSS
平面设计的岗位职责
2013/11/08 职场文书
社会发展项目建议书
2014/08/25 职场文书
化学专业大学生职业生涯规划范文
2014/09/13 职场文书
小学感恩节活动总结
2015/03/24 职场文书
2016元旦晚会主持词
2015/07/01 职场文书
2016年幼儿园教研活动总结
2016/04/05 职场文书
会计工作自我鉴定范文
2019/06/21 职场文书
解决SpringCloud Feign传对象参数调用失败的问题
2021/06/23 Java/Android
Python字典的基础操作
2021/11/01 Python
Java8利用Stream对列表进行去除重复的方法详解
2022/04/14 Java/Android