Apache与Nginx登录认证配置详解(可认证目录)

作者:简简单单 2014-07-17

一、Apache认证

认证的类型:Basic
Digest摘要
认证方法:A、容器认证: ……
B、隐藏文件认证创建.htaccess文件

方法一、容器认证

A、进入配置文件vi /etc/httpd/conf/httpd.conf
B、配置:大约在531行附近配置如下:

 代码如下 复制代码

AllowOverride None##不允许通过隐藏认证,即通过容器认证
AuthType Basic##认证类型为Basic
AuthName“ajian”##认证名字为Ajian
AuthUserFile/var/www/passwd/pass##pass为认证密码文件,指定密码文件存放的位置。
Requirevalid-user##有效用户(注意大小写,因为Word的原因有些大小写有变化)

C、创建目录mkdir-p/var/www/passwd
进入目录cd /var/www/passwd
D、创建Apache用户htpasswd-cpassajian##pass为密码文件Ajian为用户
更改把Pass文件的使用权给Apache:chown apache.apache pass
附:再在Pass文件中添加一个用户:htpasswdpasstt##添加一个TT的用户到Pass文件中
E、重启服务并测试

方法二、通过隐藏认证

和上面差不多不过配置不一样

 代码如下 复制代码
Httpd主配置文件

AllowOverrideAuthConfig

创建隐藏文件并放到要通过认证的目录
Eg:vi/var/www/html/mrtg
AuthTypeBasic
AuthName“Ajian”
AuthUserFile/var/www/passwd/pass
Require valid-user

二、Nginx 登录认证

如果要进行登录认证访问,在nginx.conf中的虚拟主机配置:

 代码如下 复制代码

auth_basic  "web test";
auth_basic_user_file  /www/htpasswd.conf;

注意:1、 auth_basic_user_file 最好用绝对路径
然后编辑htpasswd.conf文件,

需要用Apache的htpasswd命令生成:
# /usr/local/apache/bin/htpasswd -nb user 123456
user:0MIByk5HqBep

将输出的导入到htppasswd.conf中:
user:0MIByk5HqBepY

注意:1、这个文件跟nginx的用户要同权限

补充:为目录加上密码认证

例如:基于整个网站的认证,auth_basic在php解释之前。

 代码如下 复制代码
server  
{  
    listen 80;  
    server_name www.111com.net 111com.net;  
    root /www/111com.net;  
    index index.html index.htm index.php;  
    auth_basic "input you user name and password";  
    auth_basic_user_file /usr/local/nginx/conf/vhost/nginx_passwd;  
    location ~ .php$  
    {  
        fastcgi_pass 127.0.0.1:9000;  
        fastcgi_index index.php;  
        include fastcgi_params;  
    }  
    location ~ /.ht  
    {  
        deny all;  
    }  
    access_log /logs/111com.net_access.log main;  

 
针对目录的认证,在一个单独的location中,并且在该location中嵌套一个解释php的location,否则php文件不会执行并且会被下载。auth_basic在嵌套的location之后。

 代码如下 复制代码
server  
{  
    listen 80;  
    server_name www.111com.net 111com.net;  
    root /www/111com.net;  
    index index.html index.htm index.php;  
    location ~ ^/admin/.*  
    {  
    location ~ .php$  
    {  
        fastcgi_pass 127.0.0.1:9000;  
        fastcgi_index index.php;  
        include fastcgi_params;  
    }  
    auth_basic "auth";  
    auth_basic_user_file /usr/local/nginx/conf/vhost/auth/admin.pass;  
    }  
    location ~ .php$  
    {  
        fastcgi_pass 127.0.0.1:9000;  
        fastcgi_index index.php;  
        include fastcgi_params;  
    }  
    location ~ /.ht  
    {  
        deny all;  
    }  
    access_log /logs/111com.net_access.log main;  

这里有一个细节,就是location ~ ^/admin/.* {…} 保护admin目录下的所有文件。如果你只设了/admin/ 那么直接输入/admin/index.php还是可以访问并且运行的。 ^/admin/.* 意为保护该目录下所有文件。当然,只需要一次认证。并不会每次请求或每请求一个文件都要认证一下。

相关文章

精彩推荐