好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

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

有时我们在网络上的东西不但要设置用户正常的mysql数据库密码验证同时还要做服务器端的一些安全验证如像,下面我就来介绍在apache或nginx系统做一个登录认证配置。

一、Apache认证

认证的类型:Basic

Digest摘要

认证方法:A、容器认证:<Directory> ……</Directory>,B、隐藏文件认证创建.htaccess文件

方法一、容器认证

A、进入配置文件vi /etc/httpd/conf/httpd.conf

B、配置:大约在531行附近配置如下:

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

    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主配置文件:

  • <Directory [/var/www/html/mrtg]> 
  • AllowOverrideAuthConfig 
  • </Directory> 

    创建隐藏文件并放到要通过认证的目录:

  • 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 HdhCmsTestphpfensi测试数据 phpfensi测试数据;    
  •     root /www/phpfensi测试数据; 
  •     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/phpfensi测试数据_access.log main;    
  • }

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

  • server    
  • {    
  •     listen 80;    
  •     server_name HdhCmsTestphpfensi测试数据 phpfensi测试数据;    
  •     root /www/phpfensi测试数据; 
  •     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/phpfensi测试数据_access.log main;    
  • 这里有一个细节,就是location ~ ^/admin/.* {…} 保护admin目录下的所有文件,如果你只设了/admin/ 那么直接输入/admin/index.php还是可以访问并且运行的,^/admin/.* 意为保护该目录下所有文件,当然,只需要一次认证,并不会每次请求或每请求一个文件都要认证一下.

    查看更多关于Apache与Nginx登录认证配置详解(可认证目录) - lin的详细内容...

  •   阅读:85次