# \-f $request\_filename

**URL:** <https://www.ruby-forum.com/t/f-request-filename/187186>\
**Category:** NGINX\
**Created:** [April 19, 2010, 2:55pm UTC](https://www.ruby-forum.com/t/f-request-filename/187186 "2010-04-19T14:55:22Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![Tomasz\_P](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/41988e/32.png) [@Tomasz\_P](https://www.ruby-forum.com/u/Tomasz_P)\
**Post date:** [April 19, 2010, 2:55pm UTC](https://www.ruby-forum.com/t/f-request-filename/187186/1 "2010-04-19T14:55:22Z")

</div>

Hello,

Got something like this, but the break seams to not work,  
and the file is being processed by the php fastcgi process.

Any clue why?

location / {  
if (-f $request\_filename) {  
root /vhosts/default/test;  
break;  
}

```
 try_files $uri $uri/ @fallback;
 fastcgi_pass unix:/var/run/spawn-fcgi.sock;
 fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
 fastcgi_param APPLICATION_TYPE $app_type;
 fastcgi_param APP_LANG $app_lang;
 fastcgi_param SERVER_TYPE $server_type;
 fastcgi_param ENVIRONMENT test;
 include fastcgi_params;

```

}

---

<div class="post-metadata">

**Author:** ![Tomasz\_P](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/41988e/32.png) [@Tomasz\_P](https://www.ruby-forum.com/u/Tomasz_P)\
**Post date:** [April 19, 2010, 3:08pm UTC](https://www.ruby-forum.com/t/f-request-filename/187186/2 "2010-04-19T15:08:50Z")

</div>

On Mon, Apr 19, 2010 at 7:54 PM, Tomasz P. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Hello,
> 
> Got something like this, but the break seams to not work,  
> and the file is being processed by the php fastcgi process.
> 
> Any clue why?

to put it short: (most likely) you’re doing it wrong.

–  
O\< ascii ribbon campaign - stop html mail - [www.asciiribbon.org](http://www.asciiribbon.org)

---

<div class="post-metadata">

**Author:** ![Tomasz\_P](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/41988e/32.png) [@Tomasz\_P](https://www.ruby-forum.com/u/Tomasz_P)\
**Post date:** [April 19, 2010, 4:07pm UTC](https://www.ruby-forum.com/t/f-request-filename/187186/3 "2010-04-19T16:07:23Z")

</div>

Hello!

On Mon, Apr 19, 2010 at 02:54:41PM +0200, Tomasz P. wrote:

> ```
> try_files $uri $uri/ @fallback;
> fastcgi_pass unix:/var/run/spawn-fcgi.sock;
> 
> ```

Wow. I wonder what you are trying to achieve…

Maxim D.

---

<div class="post-metadata">

**Author:** ![Tomasz\_P](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/41988e/32.png) [@Tomasz\_P](https://www.ruby-forum.com/u/Tomasz_P)\
**Post date:** [April 19, 2010, 5:28pm UTC](https://www.ruby-forum.com/t/f-request-filename/187186/4 "2010-04-19T17:28:11Z")

</div>

> > Hello,
> > 
> > Got something like this, but the break seams to not work,  
> > and the file is being processed by the php fastcgi process.
> > 
> > Any clue why?
> 
> to put it short: (most likely) you’re doing it wrong  
> (most likely) you’re wasting bandwith with such comments

---

<div class="post-metadata">

**Author:** ![Tomasz\_P](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/41988e/32.png) [@Tomasz\_P](https://www.ruby-forum.com/u/Tomasz_P)\
**Post date:** [April 19, 2010, 5:25pm UTC](https://www.ruby-forum.com/t/f-request-filename/187186/5 "2010-04-19T17:25:50Z")

</div>

> > ```
> > }
> > 
> > try_files $uri $uri/ @fallback;
> > fastcgi_pass unix:/var/run/spawn-fcgi.sock;
> > 
> > ```
> 
> Wow. I wonder what you are trying to achieve…

When requesting [http://domain.tld/sitemap.xml](http://domain.tld/sitemap.xml) the request should  
got to the fastcgi process, because that needs to be generated from  
application.

But when requesting other xml files it should use the files;

---

<div class="post-metadata">

**Author:** ![Tomasz\_P](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/41988e/32.png) [@Tomasz\_P](https://www.ruby-forum.com/u/Tomasz_P)\
**Post date:** [April 19, 2010, 7:18pm UTC](https://www.ruby-forum.com/t/f-request-filename/187186/6 "2010-04-19T19:18:15Z")

</div>

On Mon, Apr 19, 2010 at 05:25:12PM +0200, Tomasz P. wrote:

> > > ```
> > > break;
> > > 
> > > ```
> 
> But when requesting other xml files it should use the files;

A generic method:

location / {  
root /vhosts/default/test;  
try\_files $uri $uri/ @fallback;  
}

location @fallback {  
fastcgi\_pass unix:/var/run/spawn-fcgi.sock;  
…  
}

Or always pass XML to fastcgi:

location / {  
root /vhosts/default/test;  
}

location ~ .xml$ {  
fastcgi\_pass unix:/var/run/spawn-fcgi.sock;  
…  
}

–  
Igor S.

> **[Igor Sysoev](http://sysoev.ru/en/)**

---

<div class="post-metadata">

**Author:** ![Tomasz\_P](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/41988e/32.png) [@Tomasz\_P](https://www.ruby-forum.com/u/Tomasz_P)\
**Post date:** [April 20, 2010, 4:30am UTC](https://www.ruby-forum.com/t/f-request-filename/187186/7 "2010-04-20T04:30:50Z")

</div>

On Tue, Apr 20, 2010 at 12:57 AM, Tomasz P. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> > Â Â …  
> > $uri @fallback

probably because no index was defined and autoindex is disabled.

–  
O\< ascii ribbon campaign - stop html mail - [www.asciiribbon.org](http://www.asciiribbon.org)

---

<div class="post-metadata">

**Author:** ![Tomasz\_P](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/41988e/32.png) [@Tomasz\_P](https://www.ruby-forum.com/u/Tomasz_P)\
**Post date:** [April 19, 2010, 7:58pm UTC](https://www.ruby-forum.com/t/f-request-filename/187186/8 "2010-04-19T19:58:40Z")

</div>

> }

This seems to work, just one question.  
The fastcgi application is Zend based, but i get an

403 forbiddened when try\_files is:  
$uri $uri/ @fallback

when i set it up to:  
$uri @fallback

it seems to work, why is that?

---

<div class="post-metadata">

**Author:** ![Tomasz\_P](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/41988e/32.png) [@Tomasz\_P](https://www.ruby-forum.com/u/Tomasz_P)\
**Post date:** [April 20, 2010, 7:24am UTC](https://www.ruby-forum.com/t/f-request-filename/187186/9 "2010-04-20T07:24:04Z")

</div>

On Mon, Apr 19, 2010 at 07:57:54PM +0200, Tomasz P. wrote:

> > ```
> > ...
> > 
> > ```
> 
> it seems to work, why is that?

When you request “/”, “try\_files $uri/” founds that there is  
a directory “/vhosts/default/test/” and nginx uses “location /”  
for handling the request. Then the directive “index” tries to  
find its default value “index.html”. If it can not find it, this leads  
to 403.

Probably, you need

location / {  
root /vhosts/default/test;  
try\_files $uri $uri/ @fallback;  
index index.php;  
}

–  
Igor S.

> **[Igor Sysoev](http://sysoev.ru/en/)**
