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

小浪SEO博客 专注SEO优化思维、SEO技术的实战分享类博客~

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

一、Apache认证

认证的类型:Basic

Digest摘要

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

方法一、容器认证

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

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

  1. <Directory“/var/www/html/mrtg”>
  2. AllowOverrideNone##不允许通过隐藏认证,即通过容器认证
  3. AuthTypeBasic##认证类型为Basic
  4. AuthName“ajian”##认证名字为Ajian
  5. AuthUserFile/var/www/passwd/pass##pass为认证密码文件,指定密码文件存放的位置。
  6. Requirevalid-user##有效用户(注意大小写,因为Word的原因有些大小写有变化)
  7. </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主配置文件:

  1. <Directory“/var/www/html/mrtg”>
  2. AllowOverrideAuthConfig
  3. </Directory>

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

  1. Eg:vi/var/www/html/mrtg
  2. AuthTypeBasic
  3. AuthName“Ajian”
  4. AuthUserFile/var/www/passwd/pass
  5. Requirevalid-user

二、Nginx 登录认证

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

  1. auth_basic"webtest";
  2. auth_basic_user_file/www/htpasswd.conf;

注意:1、 auth_basic_user_file 最好用绝对路径,然后编辑htpasswd.conf文件,需要用Apache的htpasswd命令生成:

  1. #/usr/local/apache/bin/htpasswd-nbuser123456
  2. user:0MIByk5HqBep

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

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

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

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

  1. server
  2. {
  3. listen80;
  4. server_namewww.phpfensi.comphpfensi.com;
  5. root/www/phpfensi.com;
  6. indexindex.htmlindex.htmindex.php;
  7. auth_basic"inputyouusernameandpassword";
  8. auth_basic_user_file/usr/local/nginx/conf/vhost/nginx_passwd;
  9. location~.php$
  10. {
  11. fastcgi_pass127.0.0.1:9000;
  12. fastcgi_indexindex.php;
  13. includefastcgi_params;
  14. }
  15. location~/.ht
  16. {
  17. denyall;
  18. }
  19. access_log/logs/phpfensi.com_access.logmain;
  20. }

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

  1. server
  2. {
  3. listen80;
  4. server_namewww.phpfensi.comphpfensi.com;
  5. root/www/phpfensi.com;
  6. indexindex.htmlindex.htmindex.php;
  7. location~^/admin/.*
  8. {
  9. location~.php$
  10. {
  11. fastcgi_pass127.0.0.1:9000;
  12. fastcgi_indexindex.php;
  13. includefastcgi_params;
  14. }
  15. auth_basic"auth";
  16. auth_basic_user_file/usr/local/nginx/conf/vhost/auth/admin.pass;
  17. }
  18. location~.php$
  19. {
  20. fastcgi_pass127.0.0.1:9000;
  21. fastcgi_indexindex.php;
  22. includefastcgi_params;
  23. }
  24. location~/.ht
  25. {
  26. denyall;
  27. }
  28. access_log/logs/phpfensi.com_access.logmain;
  29. }

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

相关广告
  • Apache与Nginx登录认证配置详解(可认证目录) Apache与Nginx登录认证配置详解(可认证目录) Apache与Nginx登录认证配置详解(可认证目录)
相关阅读

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

2019/10/10 17:46:56 | 谷歌SEO算法 | 友情链接作弊