Auth_basic restricted files with php

Hi,

I’ve read a lot of threads (like this ) but I can’t solve my problem.
It’s my first day working with nginx, so I’m a really newbie.

Here is a part of my nginx.conf

server {

listen 80;
server_name myserver.es;

location ~* /apc {
root /usr/local/nginx/htdocs/;
auth_basic “Restricted”;
auth_basic_user_file /usr/local/nginx/htdocs/.htpasswd;

rewrite ^/apc($|/.*) $1 break;

    }

location ~..php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME
/usr/local/nginx/htdocs$fastcgi_script_name;
include /usr/local/nginx/conf/fastcgi_params;
}

When I load in my browser myserver.es/apc.php the password for
Restricted is requestes, so I introduce it. But then the browser does
not load php, it shows the php in the browser. If I open
myserver.es/index.php it’s loaded properly, as other php files in my
directory.

Any help? It woul be very apreciated :slight_smile:

Thank you in advance

Posted at Nginx Forum:

Hi,

finally, I’ve solved it.

server {

listen 80;
server_name myserver.es;

location ~*/apc {
#root /usr/local/nginx/htdocs;
auth_basic “Restricted”;
auth_basic_user_file /usr/local/nginx/htdocs/.htpasswd;
location ~.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME
/usr/local/nginx/htdocs$fastcgi_script_name;
include /usr/local/nginx/conf/fastcgi_params;
}
}
location ~.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME
/usr/local/nginx/htdocs$fastcgi_script_name;
include /usr/local/nginx/conf/fastcgi_params;
}
}

Solution posted.

Thank you

Posted at Nginx Forum:

I know this is old, but for those still finding this in search engines,
thats not the ‘correct’ fix, though it could work, The problem us using
a root path inside of the location block, if you move the root outside
of location and into the server { } block, then there is no need to have
a duplicated nested php block, nor is there a need to manually define
the document root since $document_root would be correctly filled by that
point.

ie:

server {

listen 80;
server_name myserver.es;
root /usr/local/nginx/htdocs;

location ~*/apc {
auth_basic “Restricted”;
auth_basic_user_file /usr/local/nginx/htdocs/.htpasswd;
}

location ~.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;

#if the line isn't already in fastcgi_params
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /usr/local/nginx/conf/fastcgi_params;

}
}

Posted at Nginx Forum: