前言:
有时候我们不仅要设置用户正常的mysql数据库密码验证,还要在服务器端做一些安全验证。我来介绍一个 apache 或者 nginx 系统中的登录认证配置。
I. Apache认证
身份验证类型:基本
文摘摘要
认证方式:a、容器认证:…,b,隐藏文件认证创建。htaccess 文件。
方法 1:容器身份验证
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/.* 意为保护该目录下所有文件,当然,只需要一次认证,并不会每次请求或每请求一个文件都要认证一下.
转载请注明:汇站网 » Apache 与 Nginx 登录认证配置详解(可认证目录)