Abstract behavior of nginx
Maxim Dounin
mdounin at mdounin.ru
Mon Nov 25 13:31:48 UTC 2013
Hello!
On Fri, Nov 22, 2013 at 02:47:23PM +0100, Pomorski Jarosław wrote:
> Hi,
>
> I can't understand behavior of nginx.
> Version 1.2.1 on Debian Wheezy from official repository. I send
> requests to cdn.some_domain.pl server, and in log
> /var/log/nginx/cdn.some_domain.pl/test.log I see:
>
> image/gif:1
> image/png:1
> image/png:1
> image/gif:1
> image/png:1
> image/gif:1
>
> It is correct. If I remove hash sign in 3 last line of
> configuration file, nginx puts to
> /var/log/nginx/cdn.some_domain.pl/test.log below entries:
>
> -:0
> -:0
> -:0
> -:0
> -:0
> -:0
>
> I don't understand, why in this configuration, value of
> $sent_http_content_type variable is empty.
[...]
> map $sent_http_content_type $cdn {
> default 0;
> text/css 1;
> text/javascript 1;
> image/x-icon 1;
> image/gif 1;
> image/jpeg 1;
> image/png 1;
> }
[...]
> # if ($cdn) {
> # return 404;
> # }
The "if ($cdn)" is evaluated while processing rewrite rules, and
at this point value of $sent_http_content_type isn't yet known
(because response isn't sent). But due to this evaluation
calculated values of the $sent_http_content_type and $cdn
variables are cached, and not re-evaluated again later.
That is, what you see in logs is a value of the
$sent_http_content_type variable at the time the variable was
evaluated for the first time during request processing.
--
Maxim Dounin
http://nginx.org/en/donation.html
More information about the nginx
mailing list