You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@httpd.apache.org by Dave Wreski <dw...@guardiandigital.com.INVALID> on 2024/09/04 19:55:24 UTC

[users@httpd] Brotli compression

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



Re: [users@httpd] Brotli compression

Posted by Dave Wreski <dw...@guardiandigital.com.INVALID>.
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
>
>