map directive using $default as origin
Dewangga Bachrul Alam
dewanggaba at xtremenitro.org
Wed Aug 10 05:01:23 UTC 2016
Hello steve!
On 08/10/2016 10:47 AM, steve wrote:
> Hi!
>
> On 08/10/2016 03:07 PM, Dewangga Bachrul Alam wrote:
>> Hello!
>>
>> I am using module small_light
>> (https://github.com/cubicdaiya/ngx_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 :)
>>
> try using default instead of $default
>
Was changed to `$default default`, and it's works.
Thanks in a bunch.
$ curl -I http://localhost/kartun.png
HTTP/1.1 200 OK
Server: Unyil
Date: Wed, 10 Aug 2016 04:37:35 GMT
Content-Type: image/png
Content-Length: 494553
Last-Modified: Tue, 09 Aug 2016 11:43:38 GMT
Connection: keep-alive
Vary: Accept-Encoding
ETag: "57a9c1ea-76ffe"
More information about the nginx
mailing list