I’m using Plesk (seems to be 17.8.11 provided by OVH) and nginx is configured as proxy. My PHP script returns images into WEBP format when the browser accept it, otherwise it returns orignal format (JPG or PNG).
In .htaccess I return header Vary: Accept
so proxies know that the content depends on the Accept
header.
In nginx settings of Plesk I only checked the ‘Proxy mode’ option, other checkboxes are cleared.
When I fetch the image the Vary: Accept
is not present, I cannot imagine that nginx does not handle this header, please help me to figure this out.
2
Answers
I finally found the reason: I was not sending "Vary: Accept" header for ".webp" extension, only for ".jpg" and ".png". My URLs ends with .jpg or .png, never .webp and this is working good with Apache. Here was my htaccess directives:
To fix it I added .webp in URLs filter:
Now it's all good.
For the
Vary:
header to be allowed and understood by nginx, you need thegzip on
andgzip_vary on
settings in your/etc/nginx/nginx.conf
.Plesk actually have a documentation about it, did you check the Plesk Support website ?
https://support.plesk.com/hc/en-us/articles/213380049-How-to-enable-disable-gzip-compression-in-nginx-on-a-Plesk-server
By the way, your Plesk version is quite old, I would recommend you update it.