Question about nested locations / PHP.
Maxim Dounin
mdounin at mdounin.ru
Sat Mar 10 21:15:58 UTC 2012
Hello!
On Fri, Mar 09, 2012 at 10:12:45PM +0000, Adrian Hayter wrote:
> Not sure if this is the right place to post this; apologies in
> advance if it is!
>
> I'm having a bit of trouble with nested locations and PHP. I
> have a setup where I want all PHP files to go through fastcgi,
> and have an expiry of epoch. However, one particular PHP file is
> used to generate CSS stylesheets, and I want this file to have
> an expiry of 30 days. My current code looks like this:
>
> location ~ \.php$
> {
> location ~ /css.php
> {
> expires 30d;
> add_header Pragma public;
> add_header Cache-Control "public";
> }
>
> expires epoch
>
> // Fastcgi stuff...
> }
>
> I've tried various combinations (having the nested location at
> the end, etc) but all that happens is the css.php file doesn't
> get sent through the fastcgi process, and the raw PHP code is
> sent to the client. I've messed up somewhere, and I'm new to
> nginx (just migrated from Apache) so if someone could point out
> my error / give a quick explanation of how nested locations
> work, it would be ideal!
You have to define the "fastcgi_pass" directive in both locations
for this to work.
And, as Cliff already suggested, you don't really need nested
locations here, it's better to define exact location for
/css.php, i.e. something like this:
location = /css.php {
expires 30d;
fastcgi_pass ...
...
}
location ~ \.php$ {
expires epoch;
fastcgi_pass ...
...
}
Maxim Dounin
More information about the nginx
mailing list