Nginx 配置 Basic 认证

/*
 * 环境:LNMP(CentOS 6.6 + Nginx 1.8.0)
 */

在 Nginx 下配置 Basic 认证需要依靠 Nginx 的 http_auth_basic_module 模块(官方文档:http://nginx.org/en/docs/http/ngx_http_auth_basic_module.html

配置过程:

① 生成认证文件,形式为 用户名:密码

密码采用 crypt 方式加密(用户名:user ,密码:123456)

文件保存在 /usr/local/nginx/conf 下

生成文件: 

[root@localhost conf]# printf "user:$(openssl passwd -crypt 123456)
" >>htpasswd

Nginx 配置 Basic 认证

查看该文件:

Nginx 配置 Basic 认证


② 配置 /usr/local/nginx/conf/nginx.conf 文件,在 location 段中加上 auth_basic 和 auth_basic_user_file :

                location  {
                        auth_basic "login";
                        auth_basic_user_file /usr/local/nginx/conf/htpasswd;
                }

其中 auth_basic 为弹出框的提示语,可自定义

auth_basic_user_file 为认证文件的路径,可以写绝对路径,也可以只写文件名(默认的路径是 /usr/local/nginx/conf )

平滑重启 Nginx。 

此时访问 192.168.254.100,提示认证:

Nginx 配置 Basic 认证

如果输入错误,弹出框会继续弹出;

如果取消输入,则响应 401 Unauthorized:

Nginx 配置 Basic 认证

输入正确,则响应 200 OK。 

=====================

附:PHP 模拟 Basic 认证

<?php

$user = 'dee';
$pwd = '12345';

if($_SERVER['PHP_AUTH_USER'] != $user ||
    $_SERVER['PHP_AUTH_PW'] != $pwd
) {
    header('Content-type:text/html;charset=utf-8');
    header('WWW-Authenticate: Basic realm="加密传输"');
    header('HTTP/1.1 401 Unauthorized');
    echo '请提供正确的用户名和密码';
    exit;
}

echo 'Hello';

参考: 

http://blog.chenlb.com/2010/03/nginx-http-auth-basic.html

http://www.jb51.net/article/32211.htm

http://os.51cto.com/art/201308/407232.htm