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 proxy_cache 缓存配置详解
Mar 31 Servers
nginx的zabbix 5.0安装部署的方法步骤
Jul 16 Servers
Nginx部署vue项目和配置代理的问题解析
Aug 04 Servers
Apache Hudi数据布局黑科技降低一半查询时间
Mar 31 Servers
了解Kubernetes中的Service和Endpoint
Apr 01 Servers
docker compose 部署 golang 的 Athens 私有代理问题
Apr 28 Servers
排查Tomcat进程假死的问题
May 06 Servers
关于windows server 2012 DC 环境 重启后蓝屏代码:0xc00002e2的问题
May 25 Servers
Nginx静态压缩和代码压缩提高访问速度详解
May 30 Servers
解决Vmware虚拟机安装centos8报错“Section %Packages Does Not End With %End. Pane Is Dead”
Jun 01 Servers
winserver2019安装软件一直卡在应用程序正在为首次使用做准备
Jun 10 Servers
CentOS7设置ssh服务以及端口修改方式
Dec 24 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
mysql5的sql文件导入到mysql4的方法
2008/10/19 PHP
PHP数据流应用的一个简单实例
2012/09/14 PHP
PHP把小数转成整数3种方法
2014/06/30 PHP
php实现字符串首字母大写和单词首字母大写的方法
2015/03/14 PHP
php实现QQ空间获取当前用户的用户名并生成图片
2015/07/25 PHP
php7基于递归实现删除空文件夹的方法示例
2017/06/15 PHP
php获取ajax的headers方法与内容实例
2017/12/27 PHP
Laravel框架自定义公共函数的引入操作示例
2019/04/16 PHP
Javascript中获取出错代码所在文件及行数的代码
2010/09/23 Javascript
javascript实现网页屏蔽Backspace事件,输入框不屏蔽
2015/07/21 Javascript
jQuery简单实现input文本框内灰色提示文本效果的方法
2015/12/02 Javascript
JavaScript页面实时显示当前时间实例代码
2016/10/23 Javascript
vue动态组件实现选项卡切换效果
2017/03/08 Javascript
Vue中保存用户登录状态实例代码
2017/06/07 Javascript
微信小程序 转发功能的实现
2017/08/04 Javascript
Vue-Cli中自定义过滤器的实现代码
2017/08/12 Javascript
详解小程序云开发攻略(解决最棘手的问题)
2019/09/30 Javascript
基于vue+echarts 数据可视化大屏展示的方法示例
2020/03/09 Javascript
[40:50]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第四场
2014/05/24 DOTA
Python使用Matplotlib实现雨点图动画效果的方法
2017/12/23 Python
Python字典中的键映射多个值的方法(列表或者集合)
2018/10/17 Python
python threading和multiprocessing模块基本用法实例分析
2019/07/25 Python
matplotlib.pyplot画图并导出保存的实例
2019/12/07 Python
pytorch forward两个参数实例
2020/01/17 Python
卡拉威高尔夫官方网站:Callaway Golf
2020/09/16 全球购物
学生实习自我鉴定
2013/10/11 职场文书
服务生自我鉴定
2014/01/22 职场文书
文员的职业生涯规划发展方向
2014/02/08 职场文书
《桂花雨》教学反思
2014/04/12 职场文书
小学感恩节活动总结
2015/03/24 职场文书
毕业实习感受与体会
2015/05/26 职场文书
消夏晚会主持词
2015/06/30 职场文书
员工给公司的建议书
2019/06/24 职场文书
温馨祝福晨语:美丽的一天从我的问候开始
2019/11/28 职场文书
解决mysql:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO/YES)
2021/06/26 MySQL
浅谈音视频 pts dts基本概念及理解
2022/08/05 数码科技