fastcgi, try_files, problems
Maxim Dounin
mdounin at mdounin.ru
Thu Jul 16 16:41:59 MSD 2009
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.
> 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.
Maxim Dounin
> root /disk0/vhosts/domain/public;
> expires 30d;
> access_log /var/log/nginx/js.log;
> }
> }
>
> server {
> listen 80;
> server_name static.domain.com;
>
> location / {
> root /disk0/vhosts/domain/static;
> access_log off;
> expires 30d;
> }
> }
>
> server {
> listen 80;
> server_name .domain2.com;
>
> location / {
> fastcgi_pass 127.0.0.1:3000;
> fastcgi_index index.php;
> fastcgi_param SCRIPT_FILENAME
> /disk0/vhosts/domain2/public/index.php;
> include fastcgi_params;
> }
> }
>
More information about the nginx
mailing list