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:
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!
On Sun, 2012-03-11 at 01:15 +0400, Maxim D. wrote:
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:
I was concerned that using an absolute location might not be general
enough, since I seem to see a lot of PHP apps that use URLS like
“/css.php/these/are/args”, which might cause this location to be skipped
if css.php happened to use that scheme.
On Fri, Mar 09, 2012 at 10:12:45PM +0000, Adrian H. wrote:
{
}
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: