serve precompressed files without also serving their uncompressed counterparts

Maxim Dounin mdounin at mdounin.ru
Tue Dec 22 16:24:29 UTC 2015


Hello!

On Tue, Dec 22, 2015 at 07:15:53PM +0300, Valentin V. Bartenev wrote:

> On Tuesday 22 December 2015 19:05:18 Valentin V. Bartenev wrote:
> > On Tuesday 22 December 2015 11:01:19 snieuwen wrote:
> > > Hi,
> > > 
> > > Is it possible to serve precompressed files without serving their
> > > uncompressed counterparts?
> > > 
> > > For example:
> > > /var/www/ contains index.html.gz, but no index.html. How do I configure
> > > nginx to respond with index.html.gz when the client supports gzip or let
> > > nginx decompress the file on the fly when the client does not support gzip?
> > > 
> > > Based on this answer on stackoverflow http://serverfault.com/a/611757, I am
> > > currently using the following configuration:
> > > 
> > > location / {
> > >     try_files $uri $uri/ @application;
> > >     root /var/www;
> > >     gzip_static on;
> > >     gunzip on;
> > > }
> > > 
> > > @application configures the application server.
> > > When I try get the index.html page, nginx return a 403 forbidden error.
> > > 
> > [..]
> > 
> >   gzip_static always;
> > 
> > See the documentation: nginx.org/r/gzip_static
> > 
> [..]
> 
> But your problem is caused by "try_files", since you have configured
> it to check "$uri" and "$uri/" instead of "$uri.gz".
> 
> The configuration below should work for you:
> 
>    location / {
>        root /var/www;
> 
>        gzip_static always;
>        gunzip on;
>        
>        error_page 404 = @application;
>    }

Likely 403 is returned because there is no index file 
(http://nginx.org/r/index), and the request is to "/", not to 
"/index.html".  I don't think there is a good solution.

-- 
Maxim Dounin
http://nginx.org/



More information about the nginx mailing list