Le 23/03/2023 à 22:22, Jared Harper a écrit :
> On Thursday, March 23rd, 2023 at 2:15 PM, Jordan Geoghegan <jordan@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.
No comments:
Post a Comment