error_page can not work in if directive

xinghua_hi nginx-forum at
Tue Dec 25 16:47:58 UTC 2012

thanks, but a new question comming。
I try to resolve my problem according to your method:
“set" is also an location-level rewrite module directive, so the conf like
 location / {
           root XXX;
            set $var "haha";
            error_page 413 /413.${var}.html;

will return 404, but 413.haha.html  exists my root dir。I see the debug log ,
find some log like 
        http finalize request: 404, "/413..html?"
obviously, nginx  takes $var as an empty string, I  think the reason is also
that 413 error is generated  before set directive? so , how to use variable
in error_page uri? 

if  I  writer conf  like this:
location / {
      set $var "haha";
       error_page 413  /413.html;

location = /413.html {
      if ($var)  {
           rewriter ^  /;

the key problem is   how can i  pass the $var to location /413.html?  I try
it , the second $var is empty(I also wonder about the result because I
remember when internal redirect,  the location can share the variable) 。

Thank you .

Posted at Nginx Forum:,234417,234437#msg-234437

More information about the nginx mailing list