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配置80端口访问8080及项目名地址方法解析
Mar 31 Servers
Nginx如何配置Http、Https、WS、WSS的方法步骤
May 11 Servers
nginx+lua单机上万并发的实现
May 31 Servers
nginx服务器的下载安装与使用详解
Aug 02 Servers
解决使用了nginx获取IP地址都是127.0.0.1 的问题
Sep 25 Servers
如何Tomcat中使用ipv6地址
May 06 Servers
CentOS7安装MySQL8的超级详细教程(无坑!)
Jun 10 Servers
WinServer2012搭建DNS服务器的方法步骤
Jun 10 Servers
TaiShan 200服务器安装Ubuntu 18.04的图文教程
Jun 28 Servers
nginx代理实现静态资源访问的示例代码
Jul 07 Servers
Windows Server 2012 R2服务器安装与配置的完整步骤
Jul 15 Servers
VMware虚拟机安装 Windows Server 2022的详细图文教程
Sep 23 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中文本操作的类
2007/03/17 PHP
PHP中::、->、self、$this几种操作符的区别介绍
2013/04/24 PHP
php文件缓存类汇总
2014/11/21 PHP
javascript 按回车键相应按钮提交事件
2009/11/02 Javascript
Jquery节点遍历next与nextAll方法使用示例
2014/07/22 Javascript
jQuery制作简单柱状图实例
2015/01/28 Javascript
jQuery过滤选择器用法分析
2015/02/10 Javascript
ajax如何实现页面局部跳转与结果返回
2015/08/24 Javascript
jQuery获取DOM节点实例分析(2种方式)
2015/12/15 Javascript
js转html实体的方法
2016/09/27 Javascript
微信小程序 定义全局数据、函数复用、模版等详细介绍
2016/10/27 Javascript
jQuery实现三级联动效果
2017/03/02 Javascript
Vue获取DOM元素样式和样式更改示例
2017/03/07 Javascript
微信小程序实现图片上传放大预览删除代码
2020/06/28 Javascript
React注册倒计时功能的实现
2018/09/06 Javascript
Element Table的row-class-name无效与动态高亮显示选中行背景色
2018/11/30 Javascript
JS数组求和的常用方法实例小结
2019/01/07 Javascript
node app 打包工具pkg的具体使用
2019/01/17 Javascript
js实现简易计算器功能
2019/10/18 Javascript
vue使用swiper实现中间大两边小的轮播图效果
2019/11/24 Javascript
uni-app实现点赞评论功能
2019/11/25 Javascript
基于Angular 8和Bootstrap 4实现动态主题切换的示例代码
2020/02/11 Javascript
vue setInterval 定时器失效的解决方式
2020/07/30 Javascript
python爬虫入门教程之点点美女图片爬虫代码分享
2014/09/02 Python
Python实现的当前时间多加一天、一小时、一分钟操作示例
2018/05/21 Python
Python中如何引入第三方模块
2020/05/27 Python
QML实现钟表效果
2020/06/02 Python
Django 用户认证Auth组件的使用
2020/11/30 Python
SQL Server面试题
2016/10/17 面试题
Oracle中delete,truncate和drop的区别
2016/05/05 面试题
纠风工作实施方案
2014/03/15 职场文书
职工小家建设活动方案
2014/08/25 职场文书
2014年营销工作总结
2014/11/22 职场文书
2014年乡镇民政工作总结
2014/12/02 职场文书
让文件路径提取变得更简单的Python Path库
2021/05/27 Python
关于对TypeScript泛型参数的默认值理解
2022/07/15 Javascript