Maxim Dounin
April 20, 2009 07:04PM
Hello!

On Mon, Apr 20, 2009 at 11:19:55PM +0200, Victor Iggy wrote:

> Ok, there has to be a bug here some where. My $request_uri isn't
> matching.
>
> I have also ran if ($request_uri !~ "^/resources/.*") {} just to see if
> my regexp is messed up. The line isn't being evaluated.
> I am pretty sure it is reaching the proxy_pass since I can add
> "add_header X-Foo 'bar';" and that will be appended to response.
>
> nginx 0.7.52
>
> location / {
> if ($request_uri ~ "^/resources/.*") {
> add_header X-Foo 'bar';
> expires 30d;
> }
>
> if (!-f $request_filename) {
> proxy_pass http://127.0.0.1:8089;
> break;
> }
> }

I'm not really sure that I understand what you are trying to say,
but it looks like there is some misunderstanding how 'if' directive
works.

Unless used with rewrite module directives (e.g. set) 'if'
directive will create "hidden" location that will work as normal
one if rewrite module processing stops in it (i.e. break directive
used). It doesn't really influence request processing if rewrite
module processing doesn't stop there.

Since you have no 'break' in your "if ($request_uri ...)" -
add_header and expires directives there doesn't matter.

It's somewhat ugly and one of the reasons why usage of 'if' is
generally discouraged.

Instead, you should rewrite your configuration to something like
this:

location / {
try_files $uri @proxy;
}

location @proxy {
proxy_pass http://127.0.0.1:8089;
}

location /resources/ {
try_files $uri @proxy_resources;
add_header X-Foo 'bar';
expires 30d;
}

location @proxy_resources {
proxy_pass http://127.0.0.1:8089;
add_header X-Foo 'bar';
expires 30d;
}

Maxim Dounin
Subject Author Posted

nginx bug

Victor Iggy April 20, 2009 05:19PM

Re: nginx bug

Maxim Dounin April 20, 2009 07:04PM

Re: nginx bug

Victor Iggy April 20, 2009 08:11PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 117
Record Number of Users: 6 on February 13, 2018
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready