Nginx重定向

Nginx重定向

可以使用Nginx来设置重定向,Nginx有两种设置重定向方式

  • return形式
  • rewrite形式

return形式

表示结束规则的执行,并返回状态码给客户端

复制代码
#以下三种都可以
return code;
return url;
return code url;

示例:

复制代码
#301表示永久重定向  302表示临时重定向
return 301 http://baidu.com

rewrite形式

将某个URL重写成特定URL

示例:

复制代码
# rewrite regex replacement flag
rewrite ^/$ http://baidu.com permanent

#正则语法
* :代表前面0或更多字符
+ :代表前面1或更多字符
?:代表前面0或1个字符
^ :代表字符串的开始位置,必须以^后的字符串开头
$ :代表字符串结束位置,必须以$前的字符串结尾
. :通配符,匹配任意字符
[ ] :匹配指定字符集内的任意字符
[^ ] :匹配任何不包括在指定字符集内的任意字符串
| :匹配 | 之前或之后的实体
() :分组,组成一组用于匹配的实体,通常会有|来协助

对于replacement重写的地址,rewrite指令接收到的是URI,并不包含域名、ip、端口、协议等,且不包含地址栏中的参数,replacement就是匹配成功后用于替换URI中被截取的字符串,如果该字符串由http://或https://开头,则不会对URI进行其他处理,而是直接将重写后的URI返回给客户端

最后一项为flag,有以下几种选择

  • last 表示完成rewrite,停止处理后续rewrite指令集,然后对当前重写的新url在rewrite指令集上继续进行规则匹配
  • break 将重写后的URI继续匹配该location块中的后续操作,本条location规则匹配完成,终止匹配,不再匹配后面其他location的规则
  • redirect 返回302临时重定向,将重写后的URI返回给客户端,地址栏会显示跳转后的地址
  • parmanent 返回301永久重定向,将重写后的URI返回给客户端,地址栏会显示跳转后的地址

last和break两者很像,但是使用alias指令时必须使用last,使用proxy_pass时必须使用break,last在本条rewrite执行之后,会对其所在的server{}重新发起请求,而break在本条rewrite执行之后,则会终止匹配

复制代码
# 对于这种情况一定要用break,如果使用last,会造成死循环
location /cms/ {
	proxy_pass http://test.cms.com;
	rewrite "^/cms/(.*)\.html" /cms/index.html break;
}
rewrite_log
复制代码
# 用于开启URL重写日志
rewrite_log on | off

https://zhhll.icu/2021/服务器/Nginx/11.Nginx重定向/

本文由mdnice多平台发布

相关推荐
sxjk19871 天前
宁亢勿卑 如何理解
程序人生
山楂树の2 天前
原生 WebGL + Canvas 实现鱼眼图像去畸变(Shader逐像素计算)
图像处理·数码相机·学习·程序人生
白晨并不是很能熬夜2 天前
【RPC】第 4 篇:服务发现 — Zookeeper + 缓存容错
java·后端·程序人生·缓存·zookeeper·rpc·服务发现
Codigger官方2 天前
Phoenix 语言起步指南:开启 Polyglot Singularity 之门
开发语言·人工智能·程序人生
瞎某某Blinder2 天前
DFT学习记录[6]基于 HES06的能带计算+有效质量计算
python·学习·程序人生·数据挖掘·云计算·学习方法
流年似水~3 天前
MCP协议实战:从零搭建一个让Claude能“看见“数据库的工具服务
数据库·人工智能·程序人生·ai·ai编程
愚者游世4 天前
noexcept 说明符与 noexcept运算符各版本异同
开发语言·c++·程序人生·面试·visual studio
GeLx4 天前
从反爬角度:Playwright CDP 模式、Playwright 传统模式与 DrissionPage 的比较
python·程序人生·playwright·drissionpage·pyppeteer·浏览器自动化控制
浮尘笔记4 天前
在Snowy后台无需编码实现自动化生成CRUD操作流程
java·开发语言·经验分享·spring boot·后端·程序人生·mybatis
流年似水~4 天前
Docker/Kubernetes 实战:从入门到生产级部署
人工智能·程序人生·docker·语言模型·ai编程