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+Tomcat实现负载均衡、动静分离的原理解析
Mar 31 Servers
win10安装配置nginx的过程
Mar 31 Servers
Nginx服务器如何设置url链接
Mar 31 Servers
使用nginx配置访问wgcloud的方法
Jun 26 Servers
Nginx下SSL证书安装部署步骤介绍
Dec 06 Servers
详解nginx安装过程并代理下载服务器文件
Feb 12 Servers
docker compose 部署 golang 的 Athens 私有代理问题
Apr 28 Servers
安装Windows Server 2012 R2企业版操作系统并设置好相关参数
Apr 29 Servers
利用nginx搭建RTMP视频点播、直播、HLS服务器
May 25 Servers
Win Server2016远程桌面如何允许多用户同时登录
Jun 10 Servers
kubernetes集群搭建Zabbix监控平台的详细过程
Jul 07 Servers
nginx七层负载均衡配置详解
Jul 15 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
东方红 - 来复式再生机的修复
2021/03/02 无线电
php目录操作函数之获取目录与文件的类型
2010/12/29 PHP
php继承的一个应用
2011/09/06 PHP
PHP实现手机号码中间四位用星号(*)隐藏的自定义函数分享
2014/09/27 PHP
利用PHPStorm如何开发Laravel应用详解
2017/08/30 PHP
js 获取浏览器高度和宽度值(多浏览器)
2009/09/02 Javascript
ExtJs 表单提交登陆实现代码
2010/08/19 Javascript
javaScript数组迭代方法详解
2016/04/14 Javascript
AngularJS 霸道的过滤器小结
2017/04/26 Javascript
Three.js 再探 - 写一个微信跳一跳极简版游戏
2018/01/04 Javascript
详解angularjs 学习之 scope作用域
2018/01/15 Javascript
微信小程序中换行空格(多个空格)写法详解
2018/07/10 Javascript
vue过滤器用法实例分析
2019/03/15 Javascript
小程序根据手机机型设置自定义底部导航距离
2019/06/04 Javascript
jQuery实现轮播图源码
2019/10/23 jQuery
《javascript设计模式》学习笔记五:Javascript面向对象程序设计工厂模式实例分析
2020/04/08 Javascript
Vue-resource安装过程及使用方法解析
2020/07/21 Javascript
Vue实现简单的留言板
2020/10/23 Javascript
[02:07]DOTA2新英雄展现中国元素,完美“圣典”亮相央视
2016/12/19 DOTA
Python通过matplotlib画双层饼图及环形图简单示例
2017/12/15 Python
Python字符串的全排列算法实例详解
2019/01/07 Python
PyQt5 实现字体大小自适应分辨率的方法
2019/06/18 Python
Python跳出多重循环的方法示例
2019/07/03 Python
使用Python三角函数公式计算三角形的夹角案例
2020/04/15 Python
css3的transform造成z-index无效解决方案
2014/12/04 HTML / CSS
CSS3 实现footer 固定在底部(无论页面多高始终在底部)
2019/10/15 HTML / CSS
实现strstr功能,即在父串中寻找子串首次出现的位置
2016/08/05 面试题
私有程序集与共享程序集有什么区别
2013/04/05 面试题
个人贷款担保书
2014/04/01 职场文书
2015年仓管员工作总结
2015/04/21 职场文书
美丽人生观后感
2015/06/03 职场文书
2016年优秀党员教师先进事迹材料
2016/02/29 职场文书
Nginx 根据URL带的参数转发的实现
2021/04/01 Servers
Python-typing: 类型标注与支持 Any类型详解
2021/05/10 Python
Python+Tkinter打造签名设计工具
2022/04/01 Python
Nginx速查手册及常见问题
2022/04/07 Servers