Ruby Forum NGINX > Auth and PHP

Posted by David (Guest)
on 07.09.2008 15:29
(Received via mailing list)
Hello,

I am having a hard time trying to password protect a directory 
containing
PHP files.
Whenever I access www.domain.com/forums/admin/ I get a 404 error.
I have tried setting a fastcgi_param  SCRIPT_FILENAME in my forums/admin
location section and that doesn't work either. I have also been moving 
around
location sections incase there was a correct processing order that I
was missing out on but I couldn't get it to change anything.

Any help would be greatly appreciated.


This is my domain.conf

server {
        listen          192.168.30.10;
        server_name     www.domain.com;
        access_log      /var/log/nginx/domain.com.access.log main;
        root    /home/user/public_html;
        index   index.php index.html index.htm;
        include /usr/local/nginx/fastcgi_params;

        location / {
        }

        location ^~ /forums/admin {
                auth_basic            "Authorization Required";
                auth_basic_user_file 
/home/user/not_web_accessible/.htpasswd;
                location ~ \.php$ {
                        fastcgi_pass         127.0.0.1:9000;
                        fastcgi_intercept_errors  on;
                }
        }

        location ~ \.php$ {
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                fastcgi_intercept_errors  on;
                fastcgi_param  SCRIPT_FILENAME
/home/user/public_html$fastcgi_script_name;
        }
}
Posted by Chris Savery (Guest)
on 07.09.2008 15:45
(Received via mailing list)
If it helps, here's a section of my config that is working for auth on
one directory only,
server {
        server_name blah;
        root /var/www/mysite;
...some rewrites not relevant...
        location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; include
fastcgi_params; }
        location ~ ^/free/admin {
            auth_basic "Restricted";
            auth_basic_user_file /var/www/mysite/free/admin/.htpasswd;
            }
}
Posted by mike (Guest)
on 07.09.2008 21:19
(Received via mailing list)
Example here of a password protected dir that processes PHP:

http://michaelshadle.com/2008/08/17/nginx-wordpress-redux/

Note that the issue is probably due to the order of location {} blocks
and such. That's what got me. Also how you set them up (with the
appropriate ^~ and ~ and stuff)

As always, I also give my two cents about ways to make the config file 
cleaner:

These three things can be set globally on the http {} level:

fastcgi_index index.php;
fastcgi_intercept_errors  on;
fastcgi_param  SCRIPT_FILENAME 
/home/user/public_html$fastcgi_script_name;

Remember for SCRIPT_FILENAME you can use this and simplify your life
(unless for some reason you have to hardcode it)

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

The only thing you need per server {} or location {} is:

location ~ \.php$ {
    fastcgi_pass 127.0.0.1:9000;
}

No need to define anything special or use include 'fastcgi_params' for
each location. It can all be done globally (just being anal retentive)