Le 23/03/2023 à 22:22, Jared Harper a écrit :
On Thursday, March 23rd, 2023 at 2:15 PM, Jordan Geoghegan 
<jor...@geoghegan.ca> wrote:

On 3/9/23 17:31, Joel Carnat wrote:

Hi,

I just tried applying gzip compression on a simple test web site using
httpd and the gzip-static option ; using OpenBSD 7.2/amd64.

As I understood the man page, gzip-static is supposed to be used
inside the server block ; like listen, errdocs or tls. But doing so
does not seem to enable gzip compression for files defined in a
location block.

What fails:
server "default" {
listen on 127.0.0.1 port 80
gzip-static
block drop
location "/.well-known/acme-challenge/" {
root "/acme"
request strip 2
pass
}
location "/www/" {
root "/test"
request strip 1
pass
}
}

What works:
server "default" {
listen on 127.0.0.1 port 80
block drop
location "/.well-known/acme-challenge/" {
root "/acme"
request strip 2
pass
}
location "/www/" {
gzip-static
root "/test"
request strip 1
pass
}
}

As you may see, what works is using gzip-static inside a location
block and not outside. I've tested is using Firefox, curl and
https://gtmetrix.com. All confirm gzip-static must be inside the
location block to provide compressed resources.

Here's an example of the curl command I used:
# curl -I --compressed http://localhost:80/www/index.html
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 1083
Content-Type: text/html
Date: Fri, 10 Mar 2023 01:27:53 GMT
Last-Modified: Fri, 10 Mar 2023 00:53:26 GMT
Server: OpenBSD httpd

Is this an expected behaviour?

Regards,
Joel C.


Can confirm - I recently stumbled over this confusing behaviour as well.
Curious if this is a bug or a man page issue.

Regards,

Jordan

On my server (7.2 amd64) I have gzip-static set in the server block as 
documented, and it appears to work as expected. I am sorry that it probably 
doesn't help your situation, but maybe the differences in configuration can 
help point you in the right direction?

-- config --

server "hrpr.us" {
        listen on * port 80
        location "/.well-known/acme-challenge/*" {
                root "/acme"
                request strip 2
        }
        location * {
                block return 302 "https://$HTTP_HOST$REQUEST_URI";
        }
}

server "hrpr.us" {
        listen on * tls port 443
        alias www.hrpr.us
        gzip-static
        tls {
                certificate "/etc/ssl/hrpr.us.fullchain.pem"
                key "/etc/ssl/private/hrpr.us.key"
        }
        location "/pub/*" {
                directory auto index
        }
        location "/.well-known/acme-challenge/*" {
                root "/acme"
                request strip 2
        }
        root "/htdocs/hrpr.us/"
}

-- curl results --
~% curl -I --compressed https://hrpr.us
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 749
Content-Type: text/html
Date: Thu, 23 Mar 2023 21:18:20 GMT
Last-Modified: Thu, 23 Mar 2023 20:49:21 GMT
Server: OpenBSD httpd

~% curl -I https://hrpr.us
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 1531
Content-Type: text/html
Date: Thu, 23 Mar 2023 21:18:23 GMT
Last-Modified: Thu, 23 Mar 2023 20:49:21 GMT
Server: OpenBSD httpd


The only big difference I see between your configuration and mine is that I have a default block then pass each location. I wonder if (and how) this can be a clue.

Reply via email to