加入收藏 | 设为首页 | 会员中心 | 我要投稿 文章分享网_茂名站长网 (https://www.0668zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

Apache与Nginx登录认证配置介绍

发布时间:2022-06-14 11:26:42 所属栏目:Linux 来源:互联网
导读:有时我们在网络上的东西不但要设置用户正常的mysql数据库密码验证同时还要做服务器端的一些安全验证如像,下面我就来介绍在apache或nginx系统做一个登录认证配置。 一、Apache认证 认证的类型:Basic Digest摘要 认证方法:A、容器认证:Directory /Directory,
  有时我们在网络上的东西不但要设置用户正常的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 www.phpfensi.com phpfensi.com;    
      root /www/phpfensi.com;
      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.com_access.log main;    
  }
  针对目录的认证,在一个单独的location中,并且在该location中嵌套一个解释php的location,否则php文件不会执行并且会被下载,auth_basic在嵌套的location之后,代码如下:
 
  server    
  {    
      listen 80;    
      server_name www.phpfensi.com phpfensi.com;    
      root /www/phpfensi.com;
      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.com_access.log main;    
  }
  这里有一个细节,就是location ~ ^/admin/.* {…} 保护admin目录下的所有文件,如果你只设了/admin/ 那么直接输入/admin/index.php还是可以访问并且运行的,^/admin/.* 意为保护该目录下所有文件,当然,只需要一次认证,并不会每次请求或每请求一个文件都要认证一下

(编辑:文章分享网_茂名站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读