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

Linux服务:Nginx服务重写功能

目录

一.重写功能

1.重写功能作用

2.rewrite指令

③.if指令

②.return指令

③.set指令

​编辑 ④.break指令

 3.rewrite标志

①.redirect标志

②.permanent标志

③.break标志

④.last标志

⑤.rewrite标志实验


一.重写功能

1.重写功能作用

 重写功能(rewrite)用于实现URL的重写,URL的重写是非常有用的功能,比如它可以在我们改变网站结构之后,不需要客户端修改原来的书签,也无需其他网站修改我们的链接,就可以设置为访问,另外还可以在一定程度上提高网站的安全性。

2.rewrite指令

③.if指令

用于条件匹配判断,并根据条件判断结果选择不同的Nginx配置,可以配置在server或location块中进行配置,Nginx的if语法仅能使用if做单次判断可以在server模块和location模块,不支持使用if else或者if elif这样的多重判断,用法如下:

 if (   [连接符]   条件匹配  ){

执行动作;

}

条件匹配连接符:

  • = :比较变量和字符串是否相等,相等为true。
  • != :比较变量和字符串是否不相等,不相等为true。
  • ~ :区分大小写,判断字符是否匹配,匹配为true。
  • ~* :不区分大小写,判断字符是否匹配,匹配为true。
  • -f 和 !-f :#判断请求的文件是否存在和是否不存在。
  • -d 和 !-d :#判断请求的目录是否存在和是否不存在。
  • -x 和 !-x :#判断文件是否可执行和是否不可执行。
  • -e 和 !-e :#判断请求的文件或目录是否存在和是否不存在(包括文件,目录,软链接) 。

②.return指令

return用于完成对请求的处理,并直接向客户端返回响应状态码,比如:可以指定重定向URL(对于特殊重定向状态码,301/302等) 或者是指定提示文本内容(对于特殊状态码403/500等),处于此指令后的所有配置都将不被执行,return可以在server、if 和 location块进行配置。

使用格式:

  • return code :返回状态码
  • return code [text]:返回状态码可以选择性加一个文本
  • return code url :返回某个状态码直接跳转到某个url

③.set指令

设置变量,例如set $name kgc 设置name变量值为kgc。

 ④.break指令

只跳出 rewrite中的(if , set ,return)指令,其他不跳出,如server模块内的不跳出。

 3.rewrite标志

格式: rewrite 客户输入的(可用原始url正则表示)   你想让客户访问的 (可用url正则表示)     标志(即动作)

  • . :表示任意字符
  • \d :表示匹配数字
  • * :表示任意长度字符包括0次
  • .* :表示任意长度字符不包括0次

①.redirect标志

redirect 等于302即临时重定向,不会在浏览器中缓存。

②.permanent标志

permanent 等于301即永久重定向,会在浏览器中缓存。

③.break标志

break标志会重定向,但是不会显示跳转后的域名,只显示用户输入的域名。

④.last标志

last标志,重写完成后,停止对当前URI在当前location中后续的其它重写操作,而后对新的URL启动新一轮重写检查,不建议在location中使用。

⑤.rewrite标志实验

1、首先在主配置文件中创建2个虚拟主机,www.bj.com和www.beijing.com并且使用rewrite指令使得访问www.bj.com时跳转到www.beijing.com。

2、创建虚拟主机1和虚拟主机2的根目录并在虚拟主机1即www.bj.com的index.html中写入内容“this  is  bj”在虚拟主机2的根目录即www.beijing.com的index.html中写入内容“this is bj jump beijing” 

3、使用另外一台机器在/etc/hosts中添加本机ip对应www.bj.com和www.beijing.com。然后使用curl访问查看是否为302永久重定向提示,然后使用curl 域名  -L,查看跳转后的网页内容。

 

http://www.xdnf.cn/news/5158.html

相关文章:

  • 不同渲染任务,用CPU还是GPU?
  • 什么是项目管理的经营思维本质,怎样将其应用于项目实践
  • 解锁健康养生新境界
  • 【RAG】Milvus、Pinecone、PgVector向量数据库索引参数优化
  • UI设计公司兰亭妙微分享:汽车 MHI 设计的界面布局创新法则
  • Ubuntu 第11章 网络管理_常用的网络配置命令
  • 第三节第二部分:Static修饰方法应用场景
  • windows配置pcl
  • 【计算机主板架构】ATX架构
  • 【IC】voltage droop
  • MapReduce报错 HADOOP_HOME and hadoop.home.dir are unset.
  • 深入理解 Linux 虚拟文件系统(VFS)
  • 【日撸 Java 三百行】Day 9(While语句)
  • 使用 systemd 管理 Linux 服务:配置与自动重启指南
  • web组件的底层实现
  • 2025数维杯数学建模B题完整限量论文:马拉松经济的高质量发展思路探索
  • PostgreSQL技术内幕30:Heap Only Tuple(HOT)原理解析
  • 理解 `.sln` 和 `.csproj`:从项目结构到构建发布的一次梳理
  • yolov5如何训练使用MRI 脊椎分割数据集_ 脊椎分割项目解决方法如何 原图,标签分别2460张 实现可视化及评估
  • 常用电阻阻值表E24(5%)和E96(1%)
  • 《软件项目经济性论证报告模板:全面解析与策略建议》
  • NWD 格式转换 STL 全流程:专业方案与迪威模型网在线转换详解
  • 《大规模电动汽车充换电设施可调能力聚合评估与预测》MATLAB实现计划
  • 【C】初阶数据结构14 -- 归并排序
  • 韩媒聚焦Lazarus攻击手段升级,CertiK联创顾荣辉详解应对之道
  • C++学习之类和对象_1
  • 日常代码逻辑实现
  • Android应用隐私合规:解决极光推送SDK提前收集WiFi信息问题
  • 解决SVN更新时,提示“不知道这样的主机“问题
  • RDD的自定义分区器-案例