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

Nginx中return和rewrite的区别

引言

在Nginx中,return和rewrite都用于重定向请求,但还是有区别,写法也不一样。

1、return和rewrite区别

执行方式:

return:立即终止当前请求处理流程,并返回指定的 HTTP 状态码和响应头。它是在 Nginx 的内部进行处理的,不会发送额外的请求给客户端。

rewrite:重写请求的 URI,并根据新的 URI 重新进行一次请求。它是在客户端和服务器之间进行的,并且会引发额外的请求响应往返。

用途:

return 通常用于实现 HTTP 重定向(301、302 等)以及设置指定的 HTTP 响应码。它通常更轻量级,适合于简单的重定向需求。

rewrite 用于更灵活地修改请求的 URI,可以根据复杂的条件重写 URI。它还可以将请求内部重定向到不同的处理程序或位置块。

性能:

return 比 rewrite 更高效,因为它在 Nginx 的内部进行处理,不会引起额外的请求-响应往返。

rewrite 会引发额外的请求-响应往返,因此相对于 return 来说,性能稍差一些。

如果只是简单的重定向需求,推荐使用 return,而如果需要更复杂的 URI 重写逻辑,则可以使用 rewrite。

2、return和rewrite写法

return规则基本写法:

return [HTTP响应码] [URL];

比如,执行永久重定向(301)的写法是:

return 301 http://example.com/new-url;

rewrite基本写法如下:

rewrite [正则表达式] [目标地址] [选项];

比如将所有请求重写到一个 PHP 文件的写法是:

rewrite ^(.*)$ /index.php?$query_string last;

这里 ^(.*)是正则表达式,/index.php?$query_string是目标地址,last 是选项,表示这是最后一个 rewrite 指令。

return用于终止请求并发送响应,通常用于执行重定向;rewrite用于修改请求 URI,并将请求重定向到另一个地址,通常用于URL重写或内部转发。

所以如果做域名301转发,用return更合适,rewrite适合内部链接转发。


http://www.kler.cn/a/311099.html

相关文章:

  • win32 / WTL 开发多线程应用,子线程传递大对象给UI线程(主窗口)的方法
  • 系统上线后发现bug,如何回退版本?已经产生的新业务数据怎么办?
  • 使用 Visual Studio Installer 彻底卸载 Visual Studio方法与下载
  • 【含开题报告+文档+PPT+源码】基于Spring Boot智能综合交通出行管理平台的设计与实现
  • 微信小程序=》基础=》常见问题=》性能总结
  • FFmpeg 4.3 音视频-多路H265监控录放C++开发十三:将AVFrame转换成AVPacket。视频编码原理.编码相关api
  • python 实现entropy熵算法
  • c++ static(详解)
  • Snowflake怎么用?
  • 系统架构设计师 云原生架构篇
  • 字符设备驱动 — 4 异常与中断
  • 【Elasticsearch系列七】索引 crud
  • 【Java】网络编程-地址管理-IP协议后序-NAT机制-以太网MAC机制
  • 爬虫逆向学习(六):补环境过某数四代
  • C++初阶学习第六弹------标准库中的string类
  • 每日刷题(算法)
  • 开发一个电商API接口的步骤!!!
  • microchip中使用printf给AVR单片机串口重定向
  • Redis实现发布/订阅功能(实战篇)
  • uniapp中实现<text>文本内容点击可复制或拨打电话
  • tronado websocket
  • Java基础:Api 文档注释,字符串种类,String字符串创建,特点及常用方法
  • 【洛谷】P1546 [USACO3.1] 最短网络 Agri-Net 的题解
  • SqlServer自定义类型的使用
  • 【数据结构-一维差分】力扣1893. 检查是否区域内所有整数都被覆盖
  • 无人机滑环的核心特点及其应用分析