Estoy usando Plesk (parece ser 17.8.11 proporcionado por OVH) y nginx está configurado como proxy. Mi script PHP devuelve imágenes en formato WEBP cuando el navegador lo acepta, de lo contrario, devuelve el formato original (JPG o PNG).
En .htaccess devuelvo el encabezado Vary: Accept para que los proxies sepan que el contenido depende del encabezado Accept .
En la configuración nginx de Plesk, solo marqué la opción 'Modo proxy', otras casillas de verificación están desactivadas. Cuando busco la imagen, Vary: Accept no está presente, no puedo imaginar que nginx no maneje este encabezado, ayúdame a resolver esto.
Para que el encabezado Vary: sea permitido y entendido por nginx, necesita la configuración gzip on y gzip_vary on en su /etc/nginx/nginx.conf .
Plesk realmente tiene una documentación al respecto, ¿revisó el sitio web de soporte de Plesk? https://support.plesk.com/hc/en-us/articles/213380049-How-to-enable-disable-gzip-compression-in-nginx-on-a-Plesk-server
Por cierto, su versión de Plesk es bastante antigua, le recomiendo que la actualice.
Finalmente encontré la razón: no estaba enviando el encabezado "Variar: Aceptar" para la extensión ".webp", solo para ".jpg" y ".png". Mis URL terminan en .jpg o .png, nunca en .webp y funciona bien con Apache. Aquí estaban mis directivas htaccess:
<IfModule mod_setenvif.c> SetEnvIf Request_URI "\.(jpe?g|png)$" REQUEST_image </IfModule> <IfModule mod_headers.c> Header append Vary Accept env=REQUEST_image </IfModule>Para solucionarlo, agregué .webp en el filtro de URL:
<IfModule mod_setenvif.c> SetEnvIf Request_URI "\.(jpe?g|png|webp)$" REQUEST_image </IfModule> <IfModule mod_headers.c> Header append Vary Accept env=REQUEST_image </IfModule>Ahora todo está bien.