老师,你在第5-10节17:30左右说的是错误的

来源:5-10 rewrite模块中if指令

匪曰思存

2023-07-17

当时您的配置如下所示:

server {
	listen 8080;
	server_name localhost;
	root html;

	location /search/ {
	    if ( $remote_addr = "192.168.184.1" ) {
		return 200 "test if OK in URL /search/";
	    } 
	}

	location / {
	    if ( $uri = "/images/" ) {
		rewrite (.*) /pics/ break;
	    }
	    return 200 "test if failed\n";
	}
}

当您访问/images/,出现的是test if failed,并非是你解释的“rewrite完了还会走return因为他们没有优先级顺序”。他们是没有优先级顺序,但这里有break的
这里出现test if failed 是继续走/pics了,也就是它第二次进入location 没有匹配上if,才走的test if failed

写回答

2回答

mofiter

2023-12-19

但是前面讲 rewrite 的 flag 时,不是说 last 才会发起新请求,再次进入 server 段,而 break 不会吗,break 会直接使用重定向的 URL

0
0

weixin_慕虎5246785

2023-09-08

我觉得你说的对,我还奇怪为什么有break还会执行return

0
0

Nginx体系化深度精讲 给开发和运维的刚需课程

快速精通Nginx1.17 ,体系与深度并存,轻松搞定企业级痛点问题

661 学习 · 170 问题

查看课程