Hello, All my requests passes in the php location to fastcgi ( location ~ \.php$ ) and I would like to have different cache time for different requests. As an example : / -> cache time for 10 minutes /about -> cache time for 1 day /products -> cache time for 1h Right now I have the same cache for all requests: fastcgi_cache_valid 200 302 10m; How am I able to accomplish this setup? Thanks Nuno
on 2012-08-31 18:46
on 2012-08-31 19:08
Hello! On Fri, Aug 31, 2012 at 05:46:02PM +0100, Nuno Neves wrote: > /products -> cache time for 1h > > Right now I have the same cache for all requests: fastcgi_cache_valid > 200 302 10m; > > How am I able to accomplish this setup? Configure different locations to handle different requests, for example location = / { fastcgi_pass ... fastcgi_cache_valid 10m; ... } location = /about { fastcgi_pass ... fastcgi_cache_valid 1d; ... } location = /products { fastcgi_pass ... fastcgi_cache_valid 1h; ... } Maxim Dounin
on 2012-09-20 23:35
Hello 2012/8/31 Maxim Dounin <mdounin@mdounin.ru>: >> As an example : > Configure different locations to handle different requests, for > fastcgi_cache_valid 1d; > ... > } > > location = /products { > fastcgi_pass ... > fastcgi_cache_valid 1h; > ... > } > > Maxim Dounin I've tested this configuration, but since all php requests pass in ( location ~ \.php$ ) and all requests are sent to /index.php with try_files, this doesn't work. For example, all requests to /products are handle with /index.php with try_files location / { try_files $uri $uri/ /index.php; } location ~ \.php$ { fastcgi_pass ... fastcgi_cache one; fastcgi_cache_valid 200 20m; .... } If I add: location = /products { fastcgi_pass ... fastcgi_cache_valid 1h; ... } A request to /products get the value from .php location ( fastcgi_cache_valid 200 10m; ) If I remove fastcgi_cache_valid from .php location, all requests I get are MISS. Any ideas to accomplished this? Thanks
on 2012-09-20 23:56
On 20 Set 2012 23h29 CEST, nfnlists@gmail.com wrote: >>> \.php$ ) and I would like to have different cache time for >>> >> >> } > location / { > try_files $uri $uri/ /index.php; > } > > location ~ \.php$ { > fastcgi_pass ... > fastcgi_cache one; > fastcgi_cache_valid 200 20m; > .... > } Why do you use an insecure config? It's even referenced in the wiki: http://wiki.nginx.org/Pitfalls#Passing_Uncontrolle... I'm aware that is quite common to "recommend" this as de rigueur for PHP but I fail to see why, It seems that is just easier to have a catch all php than enumerate all scripts that are allowed. Maxim suggestion doesn't work for you because you have this regex based location. I suggest you formulate your problem more clearly so that the list can help you. Start by trying an exact location for index.php location = /index.php { ... } location = /products { ... } You have to "enable" PHP FCGI handling in each location. --- appa
on 2012-09-21 15:41
Hello, That's the way applications like wordpress and others works, in my case it's Invision Power Board. Thanks anyway. Nuno 2012/9/20 Antnio P. P. Almeida <appa@perusio.net>:
on 2012-09-21 18:45
On 21 Set 2012 15h40 CEST, nfnlists@gmail.com wrote: > Hello, > > That's the way applications like wordpress and others works, in my > case it's Invision Power Board. With WP you can enumerate all PHP files and even if you don't want to do that you can constrain the execution by using something like this: ## Regular PHP processing. location ~ ^(?<script>.+\.php)(?<path_info>.*)$ { include fastcgi.conf; ## The fastcgi_params must be redefined from the ones ## given in fastcgi.conf. No longer standard names ## but arbitrary: named patterns in regex. fastcgi_param SCRIPT_FILENAME $document_root$script; fastcgi_param SCRIPT_NAME $script; fastcgi_param PATH_INFO $path_info; ## Passing the request upstream to the FastCGI ## listener. fastcgi_pass phpcgi; } --- appa
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.