location规则和rewrite重定向

ops/2024/12/12 10:47:21/

location匹配规则

nginx当中,匹配的对象一般是uri来匹配
location匹配的分类:
多个location一旦匹配其中之一,就不在匹配其他的location
1、精确匹配 location = / {…}
=:完全相同,一个字符错都匹配不到
2、正则匹配 location ~ / {…}
^~:表示普通字符的前缀匹配,如果匹配成功,不在匹配其他的location
~:区分大小写的字符匹配
~*:不区分大小写进行匹配
!~:区分大小写,匹配大的取非
!~ *:不区分大小写,匹配取非
3、一般匹配 location /

location匹配的优先级

精确匹配 > 正则匹配 > 一般匹配
location = > loction ^~ > location ~* > location /test1 > location /

网站匹配location的规则怎么做

1、location = / {}
直接匹配网站的根目录,也就是网站的首页。首页一般都是一个静态的页面,直接匹配可以提高访问的速度
2、处理静态文件的请求,通过前缀或者后缀进行匹配的规则
3、通用匹配:一般用来转发包含.php或者.jsp为结尾的动态请求

rewrite重定向

重定向:就是输入的网站之后会跳转到设定的目标网址
rewrite:使用nginx提供的全局变量或者是自己设置的变量,结合正则表达式和标志位实现url/uri重定向
1、更换域名
2、特殊情况,比如页面维护,但是不想中断服务,可以实现url跳转,访问正常服务器
3、防盗链

rewrite 跳转

1、ngx_http_rewrite_module支持url重定向
支持条件判断:
if语句,没有else
2、语法配置
rewrite正则表达式 跳转后的内容 标志位

标志位的类型

1、permanent:返回码是301,永久重定向
2、redirect:返回码302,临时重定向
3、break:跳转时不会改变url
break是按照location的规则进行匹配的,匹配到即终止,不属于3**开头的重定向范围之内
4、last:本条规则匹配完毕之后,继续向下匹配新的location机制
last一旦陷入死循环,内部循环10次就会停止,然后报错500

500:
1、服务器故障
2、防火墙屏蔽
3、应用的端口没有启动:
配置文件写错了
有其他应用占用了本服务的端口
服务器资源不够,应用无法启动
磁盘空间不足
4、last匹配机制导致陷入死循环,10次之后就会报错500

location /{rewrite /test/(.*) http://www.xy104.com/$1 redirect;
}

返回码301和302

301:永久重定向,永久性的变更url,搜索引擎的排名和权重会转移到新的url。客户端会保留新的url
302:临时重定向,短期的url变更,一般用在维护时搜索引擎的排名和权重不会转移到新的url,客户端会继续访问原始的url

练习

1、基于域名的跳转

www.xy105,com-------->www.xy104.com

cd /usr/local/nginx/conf
vim nginx.conf
server {listen 80;server_name www.xy105.com;...location / {if ( $host = 'www.xy105.com' ) {rewrite ^/(.*)$ http://www.xy104.com/$1 permanent;} root html;index index.html;}
}
保存退出
systemctl restart nginx 
vim /etc/hosts
192.168.42.20 www.xy105.com www.xy104.com
保存退出

在这里插入图片描述

2、基于ip的跳转

192.168.42.20,这个服务器的网页正在维护,只有本机可以访问,其他主机访问统一显示正在维护中

cd /usr/local/nginx/conf
vim nginx.conf
server {
..charset utf-8set $rewrite true;if ( $remote_addr = '192.168.42.20') {set $rewrite false;}if ( $rewrite = true ) {rewrite (.+) /error.html;}location = /error.html {root html;}
}
systemctl restart  nginx
cd ../html
vim error.html
正在维护中

在这里插入图片描述

3、基于后缀名跳转

cd /usr/local/nginx/conf
vim nginx.conf
location ~* \.php$ {rewrite ^(.*)\.php$ http://www.xy104.com permanent;	
}

在这里插入图片描述


http://www.ppmy.cn/ops/141225.html

相关文章

迭代器模式的理解和实践

引言 在软件开发中,我们经常需要遍历容器对象(如数组、列表、集合等)中的元素。如果每个容器对象都实现自己的遍历算法,那么代码将会变得冗余且难以维护。为了解决这个问题,迭代器模式应运而生。迭代器模式是一种行为型…

Linux之cpu性能分析(Analysis of CPU Performance in Linux)

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 本人主要分享计算机核心技…

亚马逊云科技re:Invent:生成式AI与全球布局

作为全球云计算和人工智能领域一年一度的顶级盛宴,亚马逊云科技2024 re:Invent全球大会吸引了超过6万名现场观众以及40多万名线上参会者。而大会上生成式AI的相关话题和内容,也成为了所有观众关注的焦点。 大会期间,亚马逊云科技全球服务副总…

【Python】【Conda 】Conda vs venv:Python开发者的虚拟环境选择指南

目录 引言一、概述1.1 Conda 虚拟环境1.2 Python venv 虚拟环境 二、安装与设置2.1 安装 Conda 虚拟环境2.2 安装 Python venv 虚拟环境 三、依赖管理3.1 Conda 依赖管理3.2 Python venv 依赖管理 四、适用场景五、性能与资源占用5.1 Conda 性能与资源占用5.2 Python venv 性能…

如何使用aws的bedrock训练适合自己的模型

使用 Amazon Bedrock 训练适合自己的模型是一个涉及多个步骤的过程,包括数据准备、模型选择、训练和部署。以下是九河云总结的详细的步骤指南,帮助您在 AWS Bedrock 上训练和部署自定义模型。 ### 1. **准备工作** 在开始训练模型之前,您需…

B4X编程语言:B4X控件方法汇总

1、AddNode、AddView方法 AddNode(Node As javafx.scence.Node,Left As Double,Top As Double,Width As Double,Height As Double) B4J控件 AddView(View As javafx.scence.Node,Left As Double,Top As Double,Width As Double,Height As Double) B4J的B4XView …

图的遍历之DFS邻接矩阵法

本题要求实现一个函数,对给定的用邻接矩阵存储的无向无权图,以及一个顶点的编号v,打印以v为起点的一个深度优先搜索序列。 当搜索路径不唯一时,总是选取编号较小的邻接点。 本题保证输入的数据(顶点数量、起点的编号等…

网络安全在数字时代保护库存数据中的作用

如今,通过软件管理库存已成为一种标准做法。企业使用数字工具来跟踪库存水平、管理供应链和规划财务。 然而,技术的便利性也带来了网络威胁的风险。黑客将库存数据视为有价值的目标。保护这些数据不仅重要,而且必不可少。 了解网络安全及其…