Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I'm receving this error when trying to use script_filename

nginx: [emerg] unknown "script_filename" variable
nginx: configuration file /etc/nginx/nginx.conf test failed

However script_filename is defined in : fastcgi_params

fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;
fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

nginx config :

    server {

        listen 80;
        server_name domain.com;
        access_log  /var/log/nginx/access.log  main;
        error_log  /var/log/nginx/error.log debug;
        root /home/username/public_html;
fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
        include /etc/nginx/fastcgi_params;

    if ($script_filename !~ "sss.php"){
    set $cond "true";
    }
    if ($script_filename !~ "word-administrator"){
    set $cond "true";
    }

        location ~ \.php$ {
                    fastcgi_index  index.php;
                    fastcgi_pass 127.0.0.1:9000;
fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
                    include /etc/nginx/fastcgi_params;
         }

    }

The same error appears inside any location for example :

location / {
if ($script_filename !~ "sss.php"){
set $cond "true";
}
if ($script_filename !~ "word-administrator"){
set $cond "true";
}
}

nginx version: nginx/1.2.3

How can i fix it .?

share|improve this question

1 Answer 1

up vote 0 down vote accepted

You're doing wrong. There is no variable named $script_filename. The SCRIPT_FILENAME parameter belongs to Fastcgi module, is used for determining the script name.

What you need is $request_uri.

share|improve this answer
    
Do you mean i should replace $script_filename with $request_uri in if condition ? –  Linux Intel Sep 14 '12 at 0:35
    
Generally, yes. Depends on your purpose. –  quanta Sep 14 '12 at 2:09

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.