nginx的rewrite功能介绍

Rewrite 规则

ex:http://hostname/abc/abc.html
–>http://hostname/abc.php?abc
Rewrite对称URL Rewrite,即URL重写,就是把传入Web的请求重定向到其他URL的过程。
URL Rewrite最常见的应用是URL伪静态化,是将动态页面显示为静态页面方式的一种技术。比如http://www.123.com/news/index.asp?id=123 使用URLRewrite 转换后可以显示为 http://www.123.com/news/123.html

1、隐藏内部细节,提高安全性
2、美观
3、防盗链

Rewrite相关指令

Nginx Rewrite相关指令有if、rewrite、set、return等。

if 的语法 应用于 server和location环境内
if (condition) { … }

if可以支持如下条件判断匹配符号
~ 为区分大小写匹配
~* 为不区分大小写匹配
!~和!~*分别为区分大小写不匹配及不区分大小写不匹配
-f 和!-f 用来判断是否存在文件
-d 和!-d 用来判断是否存在目录
-e 和!-e 用来判断是否存在文件或目录
-x 和!-x 用来判断文件是否可执行

在匹配过程中可以引用一些Nginx的全局变量:
client(sip)–>server(dip/servername)

http://www.123.com/news/123.html

$args, 请求中的参数;
$document_root, 针对当前请求的根路径设置值;
$host, 请求信息中的"Host",如果请求中没有Host行,则等于设置的服务器名;
$limit_rate, 对连接速率的限制;
$request_method, 请求的方法,比如"GET"、"POST"等;
$remote_addr, 客户端地址;
$remote_port, 客户端端口号;
$remote_user, 客户端用户名,认证用;
$request_filename, 当前请求的文件路径名
$query_string, 与$args相同;
$scheme, 所用的协议,比如http或者是https
$server_protocol, 请求的协议版本,“HTTP/1.0"或"HTTP/1.1”;
$server_addr, 服务器地址,如果没有用listen指明服务器地址,使用这个变量将发起一次系统调用以取得地址(造成资源浪费);
$server_name, 请求到达的服务器名;
$document_uri 与$uri一样,URI地址;
$server_port, 请求到达的服务器端口号;

源:192.168.0.254(1024+)–>192.168.0.1(80)
请求url:http://192.168.0.1/123.html?123

log_format main ‘$remote_addr $remote_port $host $server_name $server_port $request $status $document_root $request_filename $query_string $scheme $server_protocol $document_uri’;

192.168.0.254 43466 192.168.0.1 80 GET /123.html HTTP/1.1 200 /webroot/vm01 vm01.baidu.com /webroot/vm01/123.html - http HTTP/1.1 /123.html

rewrite 指令根据表达式来重定向URI,或者修改字符串。可以应用于server,location, if环境下 每行rewrite指令最后应该根一个flag标记,支持的flag标记有:
last 表示完成rewrite
break 本条规则匹配完成后,终止匹配,不再匹配后面的规则
redirect 返回302临时重定向,浏览器地址会显示跳转后的URL地址
permanent 返回301永久重定向,浏览器地址不会显示跳转后URL地址

last和break标记的区别在于,last标记在本条rewrite规则执行完后,会对其所在的server { … } 标签重新发起请求,而break标记则在本条规则匹配完成后,停止匹配,不再做后续的匹配。另有些时候必须使用last,比如在使用alias指令时,而使用proxy_pass指令时则必须使用break。

rewrite	xxx	qqq	last
rewrite	xxx	qqq	break
rewrite	xxx	qqq	redirect
rewrite	xxx	qqq	permanent

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/29119.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

4. Revit API UI 之 Ribbon(界面)

4. Revit API UI 之 Ribbon(界面) 第二篇中,我们提到了IExternalApplication,该接口需要实现两个方法:Revit启动时调用的OnStartup 方法,和Revit关闭时调研的OnShutdown 方法。文中还给了个例子&#xff0…

为什么idea总是提示将内部类设置为static

在写一些内部类的时候,Idea总是提示要设置为static,你知道为什么吗 在Java中,内部类可以被声明为static,这种内部类称为静态内部类(Static Nested Class)。静态内部类和非静态内部类有显著的区别&#xf…

2024年,计算机专业还值得选择吗

在2024年,计算机专业仍然是一个非常有前途和有价值的选择。计算机科学和技术的发展仍在不断加速,而全球范围内对技术人才的需求也在持续增长。以下是一些原因: 1. 高薪就业机会:计算机专业毕业生通常能够获得高薪的就业机会。技术…

mybatis之特殊SQL的执行

1.1模糊查询 尝试&#xff1a; //模糊查询用户 List<User> getUserByLike(Param("mohu") String mohu);<select id"getUserByLike" resultType"user">select * from user where username like %#{mohu}% </select>Test publ…

malloc和free函数在C语言中的作用

在C语言中&#xff0c;malloc和free函数是用于动态内存管理的关键函数。它们在程序运行时允许开发者根据需要动态地分配和释放内存。 malloc函数 malloc函数用于在堆&#xff08;heap&#xff09;上动态地分配指定大小的内存块&#xff0c;并返回一个指向该内存块的指针。如果…

普林斯顿大学教授终于把算法整理成图解笔记

普林斯顿大学教授终于把算法整理成图解笔记了&#xff01;&#xff01;&#xff01; 这些年虽然学到的编程知识越来越多&#xff0c;但是我对算法却始终没搞明白&#xff0c;直到偶然间看到这份笔记&#xff0c;我才认识到这些概念是多么简单。 对于很多刚入门的小伙伴来说&am…

如何让视频有高级感 高级感视频制作方法 高级感视频怎么剪 会声会影视频剪辑制作教程 会声会影中文免费下载

高质量视频通常具有清晰的画面、优质的音频和令人印象深刻的视觉效果。这篇文章来了解如何让视频有高级感&#xff0c;高级感视频制作方法。 一、如何让视频有高级感 要让视频有高级感&#xff0c;要注意以下几个要点&#xff1a; 1、剧本和故事性&#xff1a;一个好的剧本和…

建筑工程软件Revit中复杂大模型如何实现Web端轻量化?| HOOPS技术应用

建筑信息模型&#xff08; BIM&#xff09;技术在建筑工程中扮演着越来越重要的角色&#xff0c;而Autodesk Revit作为主流的BIM软件&#xff0c;被广泛应用于设计、施工和管理。然而&#xff0c;Revit生成的复杂大模型常常由于数据量庞大而难以直接在Web端展示和操作。这时&am…

MySQL 数据库 Navicat Premium 16.01 安装教程

MySQL 数据库 Navicat Premium 16.01 安装教程 目录 MySQL 数据库 Navicat Premium 16.01 安装教程前言安装步骤同意协议选择安装目录桌面快捷方式安装正在安装安装完成 步骤获取 前言 MySQL数据库管理用Navicat更加方便&#xff0c;可视化效果更好&#xff0c;今天给大家带来…

dp练习2

如何分析这个题目呢&#xff0c;要想着当前的最优解只和前面的最优解有关 class Solution { public:int numSquares(int n) {vector<int> f(n 1);for (int i 1; i < n; i) {int minn INT_MAX;for (int j 1; j * j < i; j) {minn min(minn, f[i - j * j]);}f[…

计算机组成原理(四)Cache存储器

文章目录 Cache存储器的基本原理cache命中率、平均访问时间、效率地址映射全相联映射直接映射组相联映射 查找算法cache 存储器替换策略cache 存储器-写操作策略习题 Cache存储器的基本原理 Cache是一种高速缓冲寄存器&#xff0c;是为了解决CPU和主存之间速度不匹配而采用的一…

线性表嘻嘻嘻

顺序存储结构 数组大小 #define MaxSize 50 存储类型&#xff08;整个顺序表的&#xff09; typedef struct{ElemType data[MaxSize];//ElemType看实际需求定int length; }SqList; 数组是用来存储元素的&#xff0c;length是长度。 这里的data可以是一个结构体数组&#…

树莓派4B_OpenCv学习笔记6:OpenCv识别已知颜色_运用掩膜

今日继续学习树莓派4B 4G&#xff1a;&#xff08;Raspberry Pi&#xff0c;简称RPi或RasPi&#xff09; 本人所用树莓派4B 装载的系统与版本如下: 版本可用命令 (lsb_release -a) 查询: Opencv 版本是4.5.1&#xff1a; 学了这些OpenCv的理论性知识&#xff0c;不进行实践实在…

qss实现登录界面美化

qss实现登录界面美化 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);// 去掉头部this->setWindowFlag(Qt::FramelessWindowHint);// 去掉空白部分th…

深度学习训练——batch_size参数设置过大反而训练更耗时的原因分析

&#x1f4aa; 专业从事且热爱图像处理&#xff0c;图像处理专栏更新如下&#x1f447;&#xff1a; &#x1f4dd;《图像去噪》 &#x1f4dd;《超分辨率重建》 &#x1f4dd;《语义分割》 &#x1f4dd;《风格迁移》 &#x1f4dd;《目标检测》 &#x1f4dd;《暗光增强》 &a…

Matlab进阶绘图第60期—带伪彩图的曲面图

带伪彩图的曲面图是曲面图与伪彩图的组合。 其中&#xff0c;伪彩图与曲面图的颜色用于表示同一个特征。 由于伪彩图无遮挡但不直观&#xff0c;曲面图直观但有遮挡&#xff0c;而将二者组合&#xff0c;可以实现优势互补。 本期就来分享一下带伪彩图的曲面图的绘制方法&…

保护密码安全,探讨密码加盐及其在Go语言中的实现

介绍 在当今数字化时代&#xff0c;个人隐私和数据安全成为了人们关注的焦点之一。随着网络犯罪的不断增加&#xff0c;用户的密码安全性变得尤为重要。密码加盐作为一种常见的安全措施&#xff0c;被广泛应用于密码存储和认证系统中。本文将深入探讨密码加盐的概念、重要性以…

轻松掌握 ChatGPT:2024 年完全新手向导,让你从零到精通!

**ChatGPT 是什么** ChatGPT 是 OpenAI 开发的人工智能对话机器人&#xff0c;基于 GPT-3.5 模型构建。它通过自然语言交流&#xff0c;为用户提供信息查询和问题解答的服务。 **ChatGPT 的实用功能** - 能够帮助撰写视频剧本、招聘广告等&#xff0c;用户只需提供具体要求。 …

抖音a_bogus,mstoken全参数爬虫逆向补环境2024-06-15最新版

抖音a_bogus,mstoken全参数爬虫逆向补环境2024-06-15最新版 接口及参数 打开网页版抖音&#xff0c;右键视频进入详情页。F12打开控制台筛选detail&#xff0c;然后刷新网页&#xff0c;找到请求。可以发现我们本次的参数目标a_bogus。a_bogus有时长度为168有时为172&#xf…

利用Python语言调用讯飞星火认知大模型接口实战指南

什么是API接口 API&#xff08;应用程序编程接口&#xff09;是一组规则&#xff0c;允许不同的软件系统相互通信。通过API&#xff0c;开发者可以访问外部系统的功能和数据&#xff0c;而无需了解其内部实现。 API接口就像一座桥梁&#xff0c;连接应用程序和服务。例如&…