Nginx bug when mixing map and try_files ?
Marcin Wanat
marcin.wanat at gmail.com
Wed Oct 7 16:50:30 UTC 2020
Hi,
i am doing simple webp client support check using map and then using
try_files to check if file exists and serve it.
Nginx 1.18, my complete nginx.conf:
events {
use epoll;
worker_connections 128;
}
http {
# Check if client is capable of handling webp
map $http_accept $webp_suffix {
default "";
"~*webp" ".webp";
}
server {
listen *:8888;
server_name test;
root /srv;
location ~ ^/imgs/([0-9]*)/(.*)$ {
add_header X-webp $webp_suffix;
try_files /imgs/$1$webp_suffix
/imgs/$1.jpg =404;
}
}
}
Now i am opening:
http://test:8888/imgs/10/whatever
And it results in error 404.
Files /srv/imgs/10.jpg and /srv/imgs/10.webp do exist.
When i spoof my client and remove webp from http accept list, then
everything works ok and serve .jpg.
When i change order of try_files arguments from:
/imgs/$1$webp_suffix /imgs/$1.jpg
to:
/imgs/$1.jpg /imgs/$1$webp_suffix
than it works too and serve .jpg
I have added "add_header" to check if map webp detection works and it
results in:
X-webp .webp
header when webp support enabled in client, so map is working as expected.
What am i missing ?
1) Why it does not serve .webp file at all ?
2) Why when try_files has webp check on first position it DO NOT serve .jpg
file but 404 and when i swap order of parameters i DO serve .jpg ?
Regards,
Marcin Wanat
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx/attachments/20201007/d43538dd/attachment.htm>
More information about the nginx
mailing list