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