Disable gzip inside an IF statement?

I need to conditionally enable gzip, based on a variable.

When I try to use an “if” statement, it doesn’t work, nginx complains I
can’t use “gzip” inside of “if”.

Looking at the manual, I see gzip has the following context allowed:

“context: http, server, location, if (x) location”

What does “if (x) location” mean? I couldn’t find an example.

Alternatively, if someone can suggest a way to disable gzip dynamically
from within PHP, that would be great. It’s possible to do this in
Apache:

<?php apache_setenv("no-gzip","1"); ?>

But obviously that function isn’t supported in nginx.

Posted at Nginx Forum:

Hello!

On Fri, Jun 26, 2009 at 03:44:52PM -0400, cx wrote:

I need to conditionally enable gzip, based on a variable.

When I try to use an “if” statement, it doesn’t work, nginx complains I can’t use “gzip” inside of “if”.

Looking at the manual, I see gzip has the following context allowed:

“context: http, server, location, if (x) location”

What does “if (x) location” mean? I couldn’t find an example.

It means bad translation. Original docs say “if inside location”
(in Russian). So something like this will work (but beware, orges

  • as usual with if’s):

server {

location / {
    if (...) {
        gzip off;
        break;
    }
    ...
}

}

But this will complain:

server {

if (...) {
    gzip off;
}

...

}

Maxim D.