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实现限制某IP短时间访问次数
Mar 31 Servers
详解Apache SkyWalking 告警配置指南
Apr 22 Servers
解决使用了nginx获取IP地址都是127.0.0.1 的问题
Sep 25 Servers
nginx中proxy_pass各种用法详解
Nov 07 Servers
详解使用内网穿透工具Ngrok代理本地服务
Mar 31 Servers
Nginx禁止ip访问或非法域名访问
Apr 07 Servers
Nginx配置根据url参数重定向
Apr 11 Servers
IIS服务器中设置HTTP重定向访问HTTPS
Apr 29 Servers
docker 制作mysql镜像并自动安装
May 20 Servers
zabbix配置nginx监控的实现
May 25 Servers
教你使用RustDesk 搭建一个自己的远程桌面中继服务器
Aug 14 Servers
Apache SkyWalking 监控 MySQL Server 实战解析
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木马webshell扫描器代码
2012/01/25 PHP
php文件上传及下载附带显示文件及目录功能
2017/04/27 PHP
php下载远程大文件(获取远程文件大小)的实例
2017/06/17 PHP
Extjs TimeField 显示正常时间格式的代码
2011/06/28 Javascript
CheckBoxList多选样式jquery、C#获取选择项
2013/09/06 Javascript
JS判断、校验MAC地址的2个实例
2014/05/05 Javascript
js实例属性和原型属性示例详解
2014/11/23 Javascript
浅谈JavaScript正则表达式分组匹配
2015/04/10 Javascript
实例剖析AngularJS框架中数据的双向绑定运用
2016/03/04 Javascript
jquery实现下拉框功能效果【实例代码】
2016/05/06 Javascript
模板视图和AngularJS之间冲突的解决方法
2016/11/22 Javascript
利用JQuery阻止事件冒泡
2016/12/01 Javascript
jquery代码规范让代码越来越好看
2017/02/03 Javascript
Angular.JS中select下拉框设置value的方法
2017/06/20 Javascript
layui 表格的属性的显示转换方法
2018/08/14 Javascript
webpack-url-loader 解决项目中图片打包路径问题
2019/02/15 Javascript
React组件设计模式之组合组件应用实例分析
2020/04/29 Javascript
[46:42]DOTA2-DPC中国联赛正赛 Aster vs Magma BO3 第二场 3月5日
2021/03/11 DOTA
numpy中以文本的方式存储以及读取数据方法
2018/06/04 Python
python等差数列求和公式前 100 项的和实例
2020/02/25 Python
python中if及if-else如何使用
2020/06/02 Python
使用openCV去除文字中乱入的线条实例
2020/06/02 Python
利用css3实现的简单的鼠标悬停按钮
2014/11/04 HTML / CSS
深入浅析css3 border-image边框图像详解
2015/11/24 HTML / CSS
CSS3 函数技巧 用css 实现js实现的事情(clac Counters Tooltip)
2017/08/15 HTML / CSS
德国著名廉价网上药店:Shop-Apotheke
2017/07/23 全球购物
美国最佳在线航班预订网站:LookupFare
2019/03/26 全球购物
甲方资料员岗位职责
2013/12/13 职场文书
公务员政审个人鉴定
2014/02/25 职场文书
2014年扶贫帮困工作总结
2014/12/09 职场文书
2015年计算机教学工作总结
2015/07/22 职场文书
制定企业培训计划的五大要点!
2019/07/10 职场文书
详解Java线程池是如何重复利用空闲线程的
2021/06/26 Java/Android
Python 中 Shutil 模块详情
2021/11/11 Python
Java 关于String字符串原理上的问题
2022/04/07 Java/Android
windows10 家庭版下FTP服务器搭建教程
2022/08/05 Servers