前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nginx里面return和rewrite的区别以及写法

Nginx里面return和rewrite的区别以及写法

作者头像
速企云
发布2024-03-02 11:12:02
1.2K0
发布2024-03-02 11:12:02
举报
文章被收录于专栏:静下来

其实我以前都没有注意return和rewrite,因为都是用的一键脚本,脚本用的啥,我就用什么,还是这几天做ssl证书域名跳转,才去了解了一下。

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

1、return和rewrite区别

  1. 执行方式
    • return:立即终止当前请求处理流程,并返回指定的 HTTP 状态码和响应头。它是在 Nginx 的内部进行处理的,不会发送额外的请求给客户端。
    • rewrite:重写请求的 URI,并根据新的 URI 重新进行一次请求。它是在客户端和服务器之间进行的,并且会引发额外的请求响应往返。
  2. 用途
    • return 通常用于实现 HTTP 重定向(301、302 等)以及设置指定的 HTTP 响应码。它通常更轻量级,适合于简单的重定向需求。
    • rewrite 用于更灵活地修改请求的 URI,可以根据复杂的条件重写 URI。它还可以将请求内部重定向到不同的处理程序或位置块。
  3. 性能
    • return 比 rewrite 更高效,因为它在 Nginx 的内部进行处理,不会引起额外的请求-响应往返。
    • rewrite 会引发额外的请求-响应往返,因此相对于 return 来说,性能稍差一些。

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

2、return和rewrite写法

return规则基本写法:

代码语言:javascript
复制
return [HTTP响应码] [URL];

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

代码语言:javascript
复制
return 301 http://example.com/new-url;

rewrite基本写法如下:

代码语言:javascript
复制
rewrite [正则表达式] [目标地址] [选项];

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

代码语言:javascript
复制
rewrite ^(.*)$ /index.php?$query_string last;

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

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-3-1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、return和rewrite区别
  • 2、return和rewrite写法
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档