proxy_pass and $content_type

Maxim Dounin mdounin at mdounin.ru
Tue Sep 15 18:33:46 MSD 2009


Hello!

On Tue, Sep 15, 2009 at 03:05:56PM +0200, Cedric Jeanneret wrote:

> Hello,
> 
> Well, if it was so simple... No, S3 returns 200 whatever happens. it's either an xml with a listing, or the file....
> So proxy_intercept_errors won't work.

According to their docs they return correct status code at least for 
REST interface.  Seen here:

http://docs.amazonwebservices.com/AmazonS3/2006-03-01/index.html?UsingRESTError.html

Maxim Dounin

> 
> Ygor: well, lenny has legacy stable, and there's no backport.... and it seems that we can't (or won't) use other sources than the official debian ones. Any other way ?
> For now, we're filtering upstream in varnish...
> 
> Best regards,
> 
> C.
> 
> PS: sorry for my later mail (nginx-0.6.32-3: proxy_pass and $content_type), it was dupple because of my gmail account.... you can forget it -.-
> 
> On Tue, 15 Sep 2009 16:33:19 +0400
> Maxim Dounin <mdounin at mdounin.ru> wrote:
> 
> > Hello!
> > 
> > On Tue, Sep 15, 2009 at 01:40:06PM +0200, Cedric Jeanneret wrote:
> > 
> > > Hello all,
> > > 
> > > We're wanting to use nginx as a proxy between a varnish and a S3 storage. We're using debian lenny, nginx version is 0.6.32-3.
> > > 
> > > What we're dowing:
> > > 
> > > server {
> > >   location / {
> > >     proxy_pass ...
> > >     if ($content_type !~* "image/") {
> > >       return 403
> > >     }
> > >   }
> > > }
> > > 
> > > What happens ? well, 403 for all. We put in log "$content_type", and saw it's set to "-".
> > 
> > You are testing *request* Content-Type, not response.  It's 
> > unlikely to be set at all for most requests.
> > 
> > Additionally, this check happens at rewrite phase - i.e. before 
> > anything was got from upstream.
> > 
> > > 
> > > Is it normal? Is there another way to filter by content type?
> > > Our final goal is:
> > > S3 sends either the file if it can find it, or an XML (so a content_type "text/xml" or smth like that). We don't want to give the xml, as it contains S3 bucket name...
> > 
> > I believe S3 responds with appropriate http status code on errors, 
> > and you are able to intercept them via proxy_intercept_errors + 
> > error_page.
> > 
> > See
> > 
> > http://wiki.nginx.org/NginxHttpProxyModule#proxy_intercept_errors
> > 
> > for details.
> > 
> > Maxim Dounin
> > 
> > 
> > > 
> > > If any of you has an idea/fixe/workaround...
> > > 
> > > Thanks in advance
> > > 
> > > Best regards,
> > > 
> > > C.
> > > 
> > > 
> > > -- 
> > > Cédric Jeanneret                 |  System Administrator
> > > 021 619 10 32                    |  Camptocamp SA
> > > cedric.jeanneret at camptocamp.com  |  PSE-A / EPFL
> > 
> > 
> > 
> 
> 
> -- 
> Cédric Jeanneret                 |  System Administrator
> 021 619 10 32                    |  Camptocamp SA
> cedric.jeanneret at camptocamp.com  |  PSE-A / EPFL







More information about the nginx mailing list