location / { rewrite /a /b break; set $var asdf; add_header asdf $var; }
会发现 response header 中并没有 asdf 这一项。但如果把 set 的那一句放到 rewrite 上方,改成:
location / { set $var asdf; rewrite /a /b break; add_header asdf $var; }
asdf 就会出现。
或者去掉 break:
location / { rewrite /a /b; set $var asdf; add_header asdf $var; }
asdf 也会出现。
初步怀疑是由于 set 是 mod_rewrite 提供的, break 时不仅跳过了剩余的 rewrite ,连 set 也一块跳过了,这就太坑爹了。但在文档中并未见如此的描述,所以也可能是其他原因造成的。
转载请注明:爱开源 » nginx rewrite 的一个坑