Hi, following up with my own email here to indicate I discovered the problem.

It wasn't immediately clear from the Joomla AdminTools "prevent content transformation" setting that it essentially disables cloudflare's ability to proxy compressed content.

     Header merge Cache-Control "no-transform"

This header was preventing cloudflare from compressing content, by design.

dave

On 9/4/24 3:55 PM, Dave Wreski wrote:

Hi,

I'm having difficulty setting brotli compression for one of our sites. I'm using the same config for all sites, but it's only https://linuxsecurity.com that is having the problem. The site is proxied by cloudflare. Cloudflare enables brotli compression by default for their connection to the browser, but apparently it's not set between apache and cloudflare.

The Accept-Encoding header is set, but I can't figure out why it won't set content-encoding.

$ curl -s -I -H 'Accept-Encoding: br' https://linuxsecurity.com
HTTP/2 200
date: Wed, 04 Sep 2024 19:48:44 GMT
content-type: text/html; charset=utf-8
vary: Accept-Encoding,User-Agent,Origin
x-content-encoded-by: Joomla
expires: Wed, 17 Aug 2005 00:00:00 GMT
cache-control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
cache-control: no-transform
pragma: no-cache
set-cookie: 59181a1167c38a97d964b60c6c10affd=g5g4qcf1nme37a265p16munj7m; path=/; secure; HttpOnly set-cookie: jfbconnect_permissions_granted=deleted; expires=Thu, 01 Jan 1970 00:00:01 GMT; Max-Age=0; path=/
access-control-allow-origin: *
access-control-allow-methods: POST, GET, OPTIONS, DELETE, PUT
access-control-allow-headers: x-requested-with, Content-Type, origin, authorization, accept, client-security-token
access-control-expose-headers: Content-Security-Policy, Location
access-control-max-age: 600
strict-transport-security: max-age=31536000; includeSubDomains; preload
permissions-policy: accelerometer=(), autoplay=(), camera=(), cross-origin-isolated=(), display-capture=(), encrypted-media=(), fullscreen=(), geolocation=(), gyroscope=(), keyboard-map=(), magnetom eter=(), microphone=(), midi=(), payment=(), picture-in-picture=(), publickey-credentials-get=(), screen-wake-lock=(), sync-xhr=(), usb=(), xr-spatial-tracking=(), clipboard-read=(), clipboard-write
=(), gamepad=(), hid=(), idle-detection=(), serial=(), window-placement=()
last-modified: Wed, 04 Sep 2024 19:48:44 GMT
accept-encoding: br
cf-cache-status: DYNAMIC
report-to: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v4?s=QywmmDFtRWVIv2PA11ObQ83JYb0XGdQorRRxz5Ii4SYLRWzSJ%2FDZZfxUnp85rPuDVA9M8GATcyi7FD2iiHkt%2BNUSSzdQoBz84m0ytQT2m3F9hW8DlUhZ
orfepmu%2FzIcJ613l"}],"group":"cf-nel","max_age":604800}
nel: {"success_fraction":0,"report_to":"cf-nel","max_age":604800}
expect-ct: max-age=86400, enforce
referrer-policy: same-origin
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
server: cloudflare
cf-ray: 8be07fa789ca0fa7-EWR

I've set brotli compression using the following in the Directory section of the VirtualHost for this domain:

SetOutputFilter BROTLI_COMPRESS
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|webp)$ no-brotli

I've also tried manually setting content-encoding, but that causes the site to fail.

Is it possible I'm missing something in cloudflare?

Thanks,
Dave

Reply via email to