Directory fallback

merlin corey merlincorey at dc949.org
Wed Dec 30 00:20:00 MSK 2009


On Tue, Dec 29, 2009 at 9:56 AM, Tobia Conforto
<tobia.conforto at gmail.com> wrote:
> Hello
>
> I'm trying to come up with a nginx configuration file for a fallback-like directory structure.
>
> I have the following directories:
> /var/www/base/ (generic files)
> /var/www/site1/ (files specific to site1)
>
> Given a request for /logo.png, I would like nginx to do the following:
> 1. serve /var/www/site1/logo.png if exists; otherwise
> 2. serve /var/www/base/logo.png.
>
> The matter is complicated by the presence of PHP files. Given a request for /index.php (possibly in the same directory as image files...) nginx should:
> 1. serve /var/www/site1/index.php through FastCGI, if the php file exists; otherwise
> 2. serve /var/www/base/index.php through FastCGI.
>
> Can anybody please suggest the optimal combination of document_root, alias, location, rewrite, try_files or such options to use? I would like to avoid client-side redirects. Everything else is ok.
>
> Tobia
> _______________________________________________
> nginx mailing list
> nginx at nginx.org
> http://nginx.org/mailman/listinfo/nginx
>

Make an attempt at least! :-)

I'll get you started... please note this is written for 0.8.30 and
above and I didn't test this, but it should be close.

upstream php {
  server 127.0.0.1:9000;
}

server {
  listen 80;
  server_name site1;
  root /var/www/site1;
  fastcgi_intercept_errors on;
  location / {
    try_files $uri /var/www/base$uri;
  }
  location ~ \.php {
    error_page 404 = @basephp
    include fastcgi.conf;
    fastcgi_pass php;
  }
  location @basephp {
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME /var/www/base$fastcgi_script_name;
    fastcgi_pass php;
  }
}



More information about the nginx mailing list