map directive using $default as origin

Dewangga Bachrul Alam dewanggaba at
Wed Aug 10 03:07:51 UTC 2016


I am using module small_light
(, since the module can't
detect which browser can process webp transformation, I creating a
simple directive on nginx to detect chrome and opera only and fallback
the rest to jpeg/jpg.

But, if the origin is not jpg (eg: png or gif), the directive transform
it into jpg.

The snippet looks like :

map $http_user_agent $img_mode {
        $default jpg;
        ~*chrome webp;
        ~*opera webp;

... snip ...
        location ~ \.(jpe?g|png|gif|webp)$ {
                root    /usr/share/nginx/html;
                small_light on;
                small_light_getparam_mode on;
                rewrite (?<capt>.*) $capt?$args&of=$img_mode break;
... snip ...

Is it possible to give the $default value came from the origin file(s)?
So the nginx didn't process png/gif into jpg if using firefox. And will
process anything into webp if using Opera/Google Chrome.

Many helps are appreciated.
Thank you :)

More information about the nginx mailing list