fastcgi, try_files, problems

Tomasz Pajor nikon at puffy.pl
Thu Jul 16 17:07:29 MSD 2009


Maxim Dounin wrote:
> Hello!
>
> On Thu, Jul 16, 2009 at 02:06:34PM +0200, Tomasz Pajor wrote:
>
>   
>> Hello all,
>>
>> I have a problem with proper configuration of my page.
>>
>> What I want to achieve is that:
>> - http://domain.com/ should point to an upstream bucket of fastcgi apps.
>> - http://domain.com/administrator should be served by a fastcgi server  
>> on the same machine as balancer, so it should point to 127.0.0.1:3000 in  
>> this case
>> - i think there is a way to simplify the two backend.php entries
>> - all /js/ entries for domain.com should be served staticly
>> - static.domain.com should be served staticly
>>
>> Don't know what am I doing wrong, but the debug says that when i go to  
>> http://domain.com/administrator it uses the location /administrator but  
>> then it's redirected to /index.php and it uses location /, so not as I  
>> intended.
>>
>> Can You guys help me sort this out?
>>
>> Configuration is as follows:
>>
>> upstream apps {
>>    server 10.0.1.50:3000;
>> }
>>
>> server {
>>    listen 80;
>>    server_name domain.com;
>>    error_log /var/log/nginx/domain-error.log debug;
>>
>>    location / {
>>        root /disk0/vhosts/domain/public;
>>        try_files $uri $uri /index.php;
>>     
>
> See no reasons to test $uri twice.
>
>   
>>        fastcgi_pass apps;
>>        #fastcgi_index index.php;
>>        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
>>        include fastcgi_params;
>>    }
>>
>>    location /administrator {
>>        root /disk0/vhosts/domain/public;
>>        try_files $uri $uri index.php;
>>     
>
> You fallback to 'index.php' which is wrong as far as I see (it 
> produces redirect to 'index.php' in case of no file found - it's 
> simply invalid since has no leading '/').  Probably you mean to 
> use 
>
>          try_files $uri /administrator/index.php;
>
> instead, and probably it's a good idea to specify separate 
> location for /administrator/index.php to avoid internal 
> redirection loop in case there will be no /administrator/index.php 
> file.
>   
There is no /administrator/index.php file.
I want to simply separate the administrator backend, and serve it from 
the same machine as balancer, because i've got all the gallery photos on 
this machine.
I'm migrating this from apache.

.htaccess says:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
>>        fastcgi_pass 127.0.0.1:3000;
>>        #fastcgi_index index.php;
>>        #fastcgi_param SCRIPT_FILENAME   
>> /disk0/vhosts/domain/public/index.php;
>>        fastcgi_param SCRIPT_FILENAME  
>> /disk0/vhosts/domain/public/$fastcgi_script_name;
>>        include fastcgi_params;
>>    }
>>
>>    location /js/lib/xinha/plugins/ExtendedFileManager/backend.php {
>>        fastcgi_pass 127.0.0.1:3000;
>>        fastcgi_index backend.php;
>>        fastcgi_param SCRIPT_FILENAME   
>> /disk0/vhosts/domain/public/js/lib/xinha/plugins/ExtendedFileManager/backend.php;
>>        include fastcgi_params;
>>        access_log /var/log/nginx/backend1.log;
>>    }
>>
>>    location /js/lib/xinha/plugins/ImageManager/backend.php {
>>        fastcgi_pass 127.0.0.1:3000;
>>        fastcgi_index backend.php;
>>        fastcgi_param SCRIPT_FILENAME   
>> /disk0/vhosts/domain/public/js/lib/xinha/plugins/ImageManager/backend.php;
>>        include fastcgi_params;
>>        access_log /var/log/nginx/backend2.log;
>>    }
>>
>>    location ~ ^/(js)/  {
>>     
>
> Any reasons to use regex here?  It should be enough to use normal 
>
>      location /js/ {
>
> unless you want to render the above '/js/.../backend.php' locations 
> useless.
>   
Yes the regex is useless in this case.
Is there any way of merging this to */backend.php locations?





More information about the nginx mailing list