当前位置:首页 > 技术文章 > 正文内容

Nginx重定向(nginx重定向的次数过多)

arlanguage3个月前 (01-31)技术文章18

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重定向/

扫描二维码推送至手机访问。

版权声明:本文由AR编程网发布,如需转载请注明出处。

本文链接:http://www.arlanguage.com/post/1570.html

分享给朋友:

“Nginx重定向(nginx重定向的次数过多)” 的相关文章

2020全网最全的Nginx 性能调优实战

1、Nginx运行工作进程数量Nginx运行工作进程个数一般设置CPU的核心或者核心数x2。如果不了解cpu的核数,可以top命令之后按1看出来,也可以查看/proc/cpuinfo文件 grep ^processor /proc/cpuinfo | wc -l[root@lx~]# vi/usr/...

Nginx日志切割方法(包含docker容器中nginx日志的切割)

logrotate软件简介logrotate 是一个 Bash 的 SHELL 脚本,可对日志文件进行切分,并将切分后的日志放在统一目录。logrotate 要求 GNU bash、GNU gzip 和 GNU date。logrotate 实用程序旨在简化在生成大量日志文件的系统上对日志文件的管理...

CentOS安装nginx

安装nginx第一步,查看是否安装,没有我们就开始安装:rpm -qa| grep nginx第二步,安装依赖包。(1)gcc安装。由于nginx是c语言写的,因此在安装nginx前需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,则需要安装:yum install gcc-c...

听说你的Nginx还不会记录Response Body?

相信大家都遇到过在排查线上问题或Debug的时候,在某一瞬间,特别想开启Nginx的Response Body日志,来帮助自己快速的定位问题;但找半天发现只有$request_body/$upstream_addr/$upstream_response_time这些相近变量可用;这个时候不要慌......

Linux下如何用nginx+ffmpeg搭建流媒体服务器

安装ffmpeg安装过程略安装完成后,检查是否安装成功。比如我这里采用向pili推流的方式,将本地的一个mp4视频推流到七牛pili。ffmpeg -re -i /tmp/ffmpeg_test.mp4 -vcodec copy -acodec copy -f flv "rtmp://pil...

了解PHP-FPM

在服务器上,当我们查看php进程时,全都是php-fpm进程,大家都知道这个就是php的运行环境,那么,它到底是个什么东西呢?PHP-FPM简介PHP-FPM,就是PHP的FastCGI管理器,用于替换PHP FastCGI的大部分附加功能,在PHP5.3.3后已经成为了PHP的标配。有小伙伴要问了...