Help needed with config

Ian Hobson ian.hobson at ntlworld.com
Mon Nov 4 17:37:15 UTC 2013


Hi,

I'm baffled. What I want to do is to serve static and php files from one 
root if they exist there, and
from another if they don't, and give a 404 error if the file is in 
neither location. I have the following config file.

server {
     server_name reseller.anake.hcs;
     listen   80;
     fastcgi_read_timeout  300;
     index index.php;
     set $resellerroot "/home/ian/websites/reseller/htdocs";
     set $centralroot "/home/ian/websites/coachmaster3dev/htdocs";
     root $resellerroot;
     # if / then redirect to index.php
     location = / {
        # serve /index.php
        rewrite ^ /index.php last;
     }
     # if local php file exits, serve with fcgi
     location ~ \.php$ {
         try_files $uri $uri/ @masterphp;
         fastcgi_pass 127.0.0.1:9000;
         fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
         fastcgi_param  CENTRAL_ROOT  $centralroot;
         fastcgi_param  RESELLER_ROOT  $resellerroot;
         include /etc/nginx/fastcgi_params;
     }
     # serve php file from master root
     location @masterphp {
         root $centralroot;
        try_files $uri $uri/ =404;
         fastcgi_pass 127.0.0.1:9000;
         fastcgi_param  SCRIPT_FILENAME $centralroot$fastcgi_script_name;
         fastcgi_param  CENTRAL_ROOT  $centralroot;
         fastcgi_param  RESELLER_ROOT $resellerroot;
         include /etc/nginx/fastcgi_params;
     }
     # serve local static files if they exist
     try_files $uri @masterstatic;
     # switch to master set when they don't
     location @masterstatic {
         root $centralroot;
         try_files $uri =404;
     }
     # now to configure the long polling
     push_store_messages on;
     location /publish {
         push_publisher;
         set $push_channel_id $arg_id;
         push_message_timeout 30s;
         push_max_message_buffer_length 10;
     }
     # public long-polling endpoint
     location /activity {
         push_subscriber;
         push_subscriber_concurrency broadcast;
         set $push_channel_id $arg_id;
         default_type  text/plain;
     }
}

It gives me "No input file specified. " for *all* inputs - and I mean 
all. Files in $centralroot,
files in $resellerroot, files in neither, static files, and php files.

Why?   What am I doing silly???

I'm using nginx 1.2.6, compiled with the Comet module included.

Thanks

Ian




More information about the nginx mailing list