# How to serve PHP files outside the public folder?

**URL:** <https://www.ruby-forum.com/t/how-to-serve-php-files-outside-the-public-folder/236312>\
**Category:** NGINX\
**Created:** [August 25, 2013, 9:15am UTC](https://www.ruby-forum.com/t/how-to-serve-php-files-outside-the-public-folder/236312 "2013-08-25T09:15:48Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![alcina](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/a587f6/32.png) [@alcina](https://www.ruby-forum.com/u/alcina)\
**Post date:** [August 25, 2013, 9:15am UTC](https://www.ruby-forum.com/t/how-to-serve-php-files-outside-the-public-folder/236312/1 "2013-08-25T09:15:48Z")

</div>

For serving the PHP scripts, I use this location

location ~ .php$ {  
fastcgi\_pass 127.0.0.1:9000;  
fastcgi\_index index.php;  
fastcgi\_param SCRIPT\_FILENAME $document\_root$fastcgi\_script\_name;  
include /etc/nginx/fastcgi\_params;  
}

now I want to keep a folder outside the public folder to be served as a

location /private/ {  
/\* serving static files from /private/$server\_name/ _/  
location ~ .php$ {  
/_ serving PHP scripts from /private/$server\_name/ \*/  
}  
}

How should set this location to serve the files from outside the public  
folder?

Posted at Nginx Forum:

> **[How to serve PHP files outside the public folder?](https://forum.nginx.org/read.php?2,242193,242193#msg-242193)**
>
> For serving the PHP scripts, I use this location location ~ \\.php$ { fastcgi\_pass 127.0.0.1:9000; fastcgi\_index index.php; fastcgi\_param SCRIPT\_FILENAME $document\_root$fastcgi\_script\_name; include /etc/nginx/fastcgi\_params; } now

---

<div class="post-metadata">

**Author:** ![etrader](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/e/b5e925/32.png) [@etrader](https://www.ruby-forum.com/u/etrader)\
**Post date:** [August 26, 2013, 1:58am UTC](https://www.ruby-forum.com/t/how-to-serve-php-files-outside-the-public-folder/236312/2 "2013-08-26T01:58:37Z")

</div>

Hi,

Maybe you can try something like this;

location /private/ {  
try\_files @private  
}

location @private {  
fastcgi\_pass 127.0.0.1:9000;  
fastcgi\_index index.php;  
fastcgi\_param SCRIPT\_FILENAME $document\_root$fastcgi\_script\_name;  
include /etc/nginx/fastcgi\_params;  
}

Regards,  
Ron

---

<div class="post-metadata">

**Author:** ![etrader](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/e/b5e925/32.png) [@etrader](https://www.ruby-forum.com/u/etrader)\
**Post date:** [August 27, 2013, 12:12am UTC](https://www.ruby-forum.com/t/how-to-serve-php-files-outside-the-public-folder/236312/3 "2013-08-27T00:12:51Z")

</div>

On Sun, Aug 25, 2013 at 03:14:55AM -0400, etrader wrote:

> folder?  
> [Module ngx\_http\_core\_module](http://nginx.org/r/location)

Probably one of “location ^~ /private/”; or else “location ~  
/private/\*.\php$” before your “location ~ .php$”, should work.

## f

Francis D. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![etrader](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/e/b5e925/32.png) [@etrader](https://www.ruby-forum.com/u/etrader)\
**Post date:** [August 27, 2013, 12:14am UTC](https://www.ruby-forum.com/t/how-to-serve-php-files-outside-the-public-folder/236312/4 "2013-08-27T00:14:36Z")

</div>

On Mon, Aug 26, 2013 at 11:12:15PM +0100, Francis D. wrote:

> Probably one of “location ^~ /private/”; or else “location ~  
> /private/\*.\php$” before your “location ~ .php$”, should work.

That’s “^/private/\*.php$”, of course. Fat fingers…

## f

Francis D. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)
