How to remove the "IF" in this fcgi config

Igor Sysoev igor at sysoev.ru
Thu Feb 21 17:54:45 UTC 2013


On Feb 21, 2013, at 21:48 , Ed W wrote:

> Hi, I'm trying to setup a php app using fpm (owncloud).
> 
> I am trying to match urls which can all over the filesystem and of the form: something.php/some/path?params
> 
> So far I have something like this:
> 
> 
>                location / {
>                        try_files $uri $uri/ index.php;
>                }
> 
>                location ~ ^(?P<script_name>.+\.php)(/|$) {
>                        fastcgi_split_path_info ^(.+\.php)(/.*)$;
>                        if (!-f $script_name) {
>                                #return 404;
>                                break;
>                        }
>                        include fastcgi2.conf;
>                        fastcgi_pass 127.0.0.1:9000;
>                }
> 
> where:
> fastcgi2.conf is a copy of fastcgi.conf with one change:
> fastcgi_param  REQUEST_URI        $uri$is_args$args;
> 
> 
> How do I avoid using an IF here to check that the php file really exists?  Also, why does uncommenting the return 404 cause some kind of breakage (not even sure I understand exactly what happens? Seems like the paths get broken?)

               location ~ ^(?<script_name>.+\.php)(?<path_info>/|$) {
                       try_files  $script_name  =404;

                       include fastcgi2.conf;
                       fastcgi_param  PATH_INFO  $path_info;
                       fastcgi_pass   127.0.0.1:9000;
               }


--
Igor Sysoev
http://nginx.com/support.html



More information about the nginx mailing list