当前位置: 首页 > news >正文

location rewrite

Nginx

location 匹配的规则和优先级
Nginx常用的变量
rewrite: 重定向功能

Location

匹配 URI
URI:统一资源的表示符,是一种字符串标识,用于标识抽象或者物理资源

先来巩固一些与location结合使用的正则表达式
正则表达式:匹配的是文件内容

元字符

. :任意单个字符,包括汉字
^:起始位置
$:结束位置
*:匹配前面的字符0次或者多次
+:匹配前面的字符一次或者多次
?:一次或0次
\:转义符
[0-9A-Za-z]:匹配0-9,A-Z,a-z.
[a]:只能匹配a.
{n}:连续重复出现几次
{n,m}:最少出现,最多出现几次
():分组
|:逻辑或

location匹配的规则
  • = :精确匹配,完全匹配,错一个字都匹配到,必须完全一致。
  • ^~: 匹配普通字符,前缀匹配
  • ~$:结束位置
  • ~ :区分大小写的匹配
  • ~* :不区分大小写的匹配
  • !~ :区分大小写的匹配,取的逻辑非 —— 取反
  • !~* : 不区分大小写的取反

带有"~"的都表示正则表达式

location 用来匹配uri

  • 精确匹配:location = / {...}
  • 正则匹配:location ~ / {...}
  • 一般匹配: location / {...}
location匹配规则官网

www.gsn.com/                                                    匹配的是A

www.gsn.com/test                                              匹配的是B

www.gsn.com/documengs/                                匹配的是C

www.gsn.com/images/                                       匹配的是D

www.gsn.com/documents/1.jpg                         匹配的是E

第一个规则
location = / {}
直接匹配根网站。通过域名访问网站首页是最多的。使用精确匹配,可以加快处理速度、首页。

第二个规则
location ^~ /static/
处理静态文件的请求,目录匹配

第三个规则

location ~* (gif / jpg / png / css)匹配图片用的

第四个规则——通用
location / {
proxy_pass 指定代理,反向代理,转发动态请求。.php .jsp的请求,发到后端
location /test/ {
    proxy_pass 指定代理,反向代理,转发动态请求,将“.php”".jsp"发到后端服务器
}

匹配的优先级

越精确,优先级越高
=  精确匹配优先级最高
~  正则次之
/   通用的优先级最低

优先级:

location =  >  location ^~  >  locatuin ~*  >  location /test/  >  location /

一旦匹配到了之后,不再向下匹配

Nginx内置变量

$remote_addr:客户端的IP地址

$remote_port:客户端的端口号

$server_addr:服务器的IP地址。

$server_port:服务器的端口号。

$request_method:请求的HTTP方法,如GET、POST、等。


x_forwarded_for:用于获取HTTP请求头中的X-Forwarded-For字段的值。
X-Forwarded-For是一个常见的HTTP请求头,通常由代理服务器添加,用于指示原始客户端的IP地址。


proxy_set_header X-Forwarded-For $remote_addr; 这个是传给后端。
X-Real-IP:头部为客户端真实IP地址
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header指令来设置X-Real-IP头部的值为$remote_addr,即客户端的真实IP地址
这样,Nginx会将客户端的真实IP地址作为X-Real-IP头部的值传递给后端服务器。

查看客户端端口号;服务端IP地址

扩展
  • $uri: 请求的URI,不包含主机和查询参数。
  • $request_uri: 请求的URI,包含主机和查询参数。
  • $args: 查询参数部分,即?后面的内容。
  • $query_string: 整个查询字符串,包含?。
  • $host: 请求的主机名。
  • $http_user_agent: 请求的User-Agent头信息,用于表示请求客户端浏览器和操作系统。
  • $http_referer: 请求的Referer头信息,表示当前页面的来源URL。
  • $content_type: 请求的Content-Type头信息,表示请求体的MIME类型。
  • $content_length: 请求的Content-Length头信息,表示请求体的长度。
  • $scheme: 请求的协议,通常是http或https。
  • $request_filename: 请求的文件名,用于指定请求的实际文件路径。
  • $document_root: 当前请求的根目录。
  • $server_name: 服务器名称,用于匹配server块的server_name指令。

rewrite 重定向       *面

rewrite使用NGINX的全局变量或者是自己设置的变量,结合正则表达式和标志位实现url的重定向。

rewrite执行顺序
  • 执行server块当中的rewrite的
  • 执行location匹配
  • 如果location当中还有rewrite,继续执行

不停rewrite死循环,只能10次然后报错,报错的状态码:500

rewrite语法

rewrite <regex> <repTacemnet> [flag]

rewrite:开始重定向
regex:正则匹配的规则
replacemnet:表示跳转后的内容,你要重定向的url
flag:标志位

标志位

  • permanent:永久重定向,返回码301;永久性的变更url,搜索引擎会转移他的权重以及排名到新的URL
  • redirect:临时重定向,显示的返回码302;用于短期变更(网站维护,或升级更新);搜索引擎不会转移权重和排名到新的URL
  • 304:表示获取的是本地缓存
  • break:是重定向但不会改变url,而且只会请求一次;跳出当前匹配,即刻终止
  • last:本条负责匹配完成后继续向下匹配,只要有last就继续匹配;配置的时候需要注意,防止死循环

扩展

以页面形式展示,却以文本格式下载如何解决?

日志中如下报错:

rewrite or internal redirection cycle while processing 

#代表写成死循环一直在匹配location,10次之后返回码500

相关文章:

location rewrite

Nginx location 匹配的规则和优先级 Nginx常用的变量 rewrite: 重定向功能 Location 匹配 URI URI&#xff1a;统一资源的表示符&#xff0c;是一种字符串标识&#xff0c;用于标识抽象或者物理资源 先来巩固一些与location结合使用的正则表达式 正则表达式&#xff1a;匹…...

XLSX.utils.sheet_to_json()解析excel,给空的单元格赋值为空字符串

前言 今天用到XLSX来解析excel文件&#xff0c;调用XLSX.utils.sheet_to_json(worksheet)&#xff0c;发现如果单元格为空的话&#xff0c;解析出来的结果&#xff0c;就会缺少相应的key&#xff08;如图所示&#xff09;。但是我想要单元格为空的话&#xff0c;值就默认给空字…...

安装Docker(Linux:CentOS)

大家好我是苏麟今安装一下Docker. 安装Docker Docker 分为 CE 和 EE 两大版本。CE 即社区版&#xff08;免费&#xff0c;支持周期 7 个月&#xff09;&#xff0c;EE 即企业版&#xff0c;强调安全&#xff0c;付费使用&#xff0c;支持周期 24 个月。 Docker CE 分为 stab…...

2310月问题描述

apt包管理 修改apt目录,不存在apt.conf文件,但是存在apt.conf.d目录&#xff0c;如何修改apt的安装目录 apt-get 命令是 Ubuntu 系统中的包管理工具&#xff0c;可以用来安装、卸载包&#xff0c;也可以用来升级包&#xff0c;还可以用来把系统升级到新的版本。 语法格式&…...

y _hat[ [ 0, 1], y ]语法——pytorch张量花式索引

目录 1. y _hat[ [ 0, 1]例子 2.pytorch花式索引 &#xff08;1&#xff09;简单行、列索引 &#xff08;2&#xff09;列表索引 &#xff08;3&#xff09;范围索引 &#xff08;4&#xff09;布尔索引 &#xff08;5&#xff09;多维索引 3.张量拼接 &#xff08;1…...

高级岗位面试问题

自我介绍 【我是谁】 、【我做过什么】、【我会什么】 面试官您好,我叫xxx,来自江西。20XX年毕业于XXXXX大学,已有X年软件测试工作经验,之前在XX家公司担任测试工程师 最近一家公司我主要负责了两个项目的测试,分别为XXXXX的编写,测试用例的设计,测试环境的搭建以及测…...

区块链游戏的开发框架

链游&#xff08;Blockchain Games&#xff09;是基于区块链技术构建的游戏。它们与传统游戏有一些显著不同之处&#xff0c;因此需要特定的开发框架和工具。以下是一些用于链游开发的开发框架及其特点&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专…...

Windows Nginx 服务器部署(保姆级)

大家好 我是寸铁 不知道怎么部署Windows Nginx 服务器看过来 手把手带你部署服务器 将你的本地网页部署到服务器上 话不多说&#xff0c;直接上操作&#xff01;&#xff01;&#xff01; Windows Nginx服务器部署 进入下载地址&#xff1a; http://nginx.org/en/download.h…...

常用的Linux命令及其用法

常用的Linux命令及其用法 1. ls&#xff1a;列出文件和目录 ls命令用于列出当前目录中的文件和子目录。通过不同的选项&#xff0c;可以显示详细信息、隐藏文件等。 示例&#xff1a; ls -l ls -a2. cd&#xff1a;切换工作目录 cd命令用于切换当前工作目录。通过指定目标…...

linux总结

cat -n filename 查看文件,-n用来给每一行标行号,可以省略 cat /var/log/mysqld.log | grep password 我们可以通过上述指令&#xff0c;查询日志文件内容中包含password的行信息。 more 作用: 以分页的形式显示文件内容 语法: more fileName 操作说明: 回车键 …...

java - 设计模式 - 状态模式

文章目录 前言java - 设计模式 - 状态模式1. 概述2. 作用3. 示例 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差&#xff0c;实在白嫖的话&#xf…...

c/c++--编译指令(预处理之后) #pragma

1. #pragma 作用 #pragma 用于指示编译器完成一些特定的动作#pragma 的功能或作用 随编译器不同而变化。 即 不同的编译器可能以不同的方式解释同一条 #pragma 指令 2. 用法 常见用法示例 2.1 #pragma message 参考链接 自定义编译信息输出到终端(一般和#if配合使用&#…...

黑马JVM总结(三十二)

&#xff08;1&#xff09;类加载器-线程上下文1 使用的应用程序类加载器来完成类的加载&#xff0c;不是用的启动类加载器&#xff0c;jdk在某些情况下要打破&#xff0c;双亲委派的模式&#xff0c;有时候需要调用应用程序类加载器来完成类的加载&#xff0c;否则有些类它是找…...

接口自动化测试框架【reudom】

reudom Automated testing framework based on requests and unittest interface. 基于 Unittest 和 Requests 的 接口自动化测试框架 介绍 基于Unittest/Requests的接口自动化测试库 提供脚手架&#xff0c;快速生成接口自动化测试项目。 自动生成HTML测试报告。 支持用例参…...

【数据库问题】删除数据库失败,提示:there is 1 other session using the database

删除数据库失败&#xff0c;提示&#xff1a;there is 1 other session using the database 解决办法&#xff1a; SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE datnametest_database AND pid<>pg_backend_pid(); 使用上述命令先关…...

【技术干货】如何快速创建商用照明 OEM APP?

本文介绍了如何在涂鸦 IoT 平台的 App 工作台上创建一款体验版商照 App、正式版 OEM App、上架 App、以及完成通用配置。 OEM App 开发 创建 App 登录 涂鸦 IoT 平台的 App 页面。 单击 创建APP&#xff0c;选择 商照 APP 进行创建。 在提示框里&#xff0c;完善 App 信息…...

阿里云ModelScope 是一个“模型即服务”(MaaS)平台

简介 项目地址&#xff1a;https://github.com/modelscope/modelscope/tree/master ModelScope 是一个“模型即服务”(MaaS)平台&#xff0c;旨在汇集来自AI社区的最先进的机器学习模型&#xff0c;并简化在实际应用中使用AI模型的流程。ModelScope库使开发人员能够通过丰富的…...

Nodejs内置模块process

文章目录 内置模块process写在前面1. arch()2. cwd()3. argv4. memoryUsage()5. exit()6. kill()7. env【最常用】 内置模块process 写在前面 process是Nodejs操作当前进程和控制当前进程的API&#xff0c;并且是挂载到globalThis下面的全局API。 下面是process的一些常用AP…...

Vue2 修改了数组哪些方法,为什么

1、Vue2 修改了以下数组方法 push()、pop()、shift()、unshift()、splice()、sort()、reverse() 这些方法都是可以改变原数组的。 为了实现数据响应式更新&#xff0c;Vue2 在这些方法中添加了特定的代码&#xff0c;以便通知 Vue 视图更新数据 举个例子&#xff0c;当我们…...

均值滤波算法及例程

均值滤波算法是一种简单的图像滤波方法&#xff0c;它使用一个固定大小的滤波器来平滑图像。该滤波器由一个矩形的窗口组成&#xff0c;窗口中的像素值取平均值作为中心像素的新值。以下是均值滤波算法的步骤&#xff1a; 定义滤波器的大小&#xff08;窗口大小&#xff09;&a…...

Cocos Creator实战:5步搞定棋牌游戏大厅场景开发(附完整代码)

Cocos Creator实战&#xff1a;5步构建高交互棋牌游戏大厅&#xff08;附模块化代码&#xff09; 棋牌游戏大厅作为玩家进入游戏的第一印象&#xff0c;其体验直接决定了用户留存率。根据行业数据&#xff0c;精心设计的大厅界面能提升30%以上的玩家次日留存。不同于传统游戏开…...

YOLOv8模型在RKNN平台上的实战部署指南(附完整代码)

YOLOv8模型在RKNN平台上的实战部署指南&#xff08;附完整代码&#xff09; 在嵌入式设备上部署高性能目标检测模型一直是计算机视觉领域的难点。瑞芯微&#xff08;Rockchip&#xff09;推出的RKNN推理框架为这一挑战提供了解决方案&#xff0c;尤其适合需要低功耗、高效率的边…...

Pi0一键部署教程:nohup后台运行+log实时监控+进程安全终止

Pi0一键部署教程&#xff1a;nohup后台运行log实时监控进程安全终止 本文介绍如何快速部署和运行Pi0机器人控制模型&#xff0c;重点讲解后台运行、日志监控和进程管理的实用技巧&#xff0c;让AI应用稳定运行在服务器环境中。 1. 项目简介&#xff1a;什么是Pi0&#xff1f; …...

Wan2.2-I2V-A14B效果展示:复杂提示词‘雨夜霓虹街道行人撑伞行走’生成效果

Wan2.2-I2V-A14B效果展示&#xff1a;复杂提示词雨夜霓虹街道行人撑伞行走生成效果 1. 模型能力概览 Wan2.2-I2V-A14B是一款专为高质量视频生成设计的先进模型&#xff0c;能够将文字描述转化为生动的动态画面。这款模型特别擅长处理复杂场景和细腻氛围的渲染&#xff0c;在以…...

Vision Transformer在timm中的实现与优化

Vision Transformer在timm中的实现与优化 【免费下载链接】pytorch-image-models The largest collection of PyTorch image encoders / backbones. Including train, eval, inference, export scripts, and pretrained weights -- ResNet, ResNeXT, EfficientNet, NFNet, Visi…...

AI排忧解难:让快马智能诊断并解决你的openclaw安装故障

最近在折腾openclaw这个工具时&#xff0c;遇到了不少安装上的坑。从依赖冲突到环境配置错误&#xff0c;每次报错都得花大把时间查资料。后来发现用AI辅助诊断的思路可以大幅提升效率&#xff0c;于是尝试在InsCode(快马)平台上做了个智能诊断脚本&#xff0c;效果意外地好。 …...

VHD/VHDX 数据守护:BAT位图校验与修复

VHD/VHDX 数据守护&#xff1a;BAT位图校验与修复VHD&#xff08;Virtual Hard Disk&#xff09;和 VHDX&#xff08;Virtual Hard Disk v2&#xff09;是微软 Hyper-V 等虚拟化平台常用的虚拟磁盘格式。在这些虚拟磁盘文件中&#xff0c;区块分配表&#xff08;Block Allocati…...

全球化适配:开源工具多语言方案的3大策略与5步落地指南

全球化适配&#xff1a;开源工具多语言方案的3大策略与5步落地指南 【免费下载链接】input-overlay Show keyboard, gamepad and mouse input on stream 项目地址: https://gitcode.com/gh_mirrors/in/input-overlay 在全球化协作日益频繁的今天&#xff0c;开源工具的多…...

告别HEIC预览盲区:让Windows用户轻松驾驭苹果图像格式

告别HEIC预览盲区&#xff1a;让Windows用户轻松驾驭苹果图像格式 【免费下载链接】windows-heic-thumbnails Enable Windows Explorer to display thumbnails for HEIC files 项目地址: https://gitcode.com/gh_mirrors/wi/windows-heic-thumbnails 问题场景&#xff1…...

ai辅助c++开发:让快马成为你的codeblocks智能编程助手与算法导师

AI辅助C开发&#xff1a;让快马成为你的CodeBlocks智能编程助手与算法导师 最近在用CodeBlocks开发一个C图形化应用时&#xff0c;遇到了一个典型问题&#xff1a;需要实现非递归快速排序算法并测试性能。传统开发方式可能需要反复查阅文档、调试代码&#xff0c;但借助InsCod…...