nginx 使用密码认证

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx 使用密码认证相关的知识,希望对你有一定的参考价值。

参考技术A 1.一些非公开的页面,只想给特定的用户访问,但是又不想写权限控制

2.临时需要请求线上的调试接口,但是这些接口不能直接暴露

1.安装一个生成账号密码的小工具

2.生成一个账号密码

3.在nginx配置启用密码认证

4.重新加载配置文件

通过分析,登录凭证并不是放在cookie而是在header(字段是Authorization)。所以重新打开浏览器的时候就需要重新登录了。

Nginx 访问认证

简介

在实际工作中,企业中有些网站,要求使用账号和密码才能访问,如网站后台、phpMyAdmin 、Wiki 平台 等

模块ngx_http_auth_basic_module 允许使用“HTTP基本认证”协议验证用户名和密码来限制对资源的访问

模块ngx_http_auth_basic_module 下有两条指令 auth_basic 和 auth_basic_user_file


语法

auth_basic string | off;

开启使用“HTTP基本认证”协议的用户名密码验证。参数 off 可以取消继承自上一个配置等级 auth_basic 指令的影响,默认参数为 off。

auth_basic_user_file file;

指定保存用户名和密码的文件,密码是加密的,格式如下:

# comment
name1:password1
name2:password2:comment
name3:password3

可以用Apache发行包中的htpasswd命令来创建。


实战

配置虚拟主机:

server {
        listen       80;
        server_name  www.abc.com;
        location / {
            root   html/blog;
            index  index.html index.htm;
            auth_basic            "xxxxxxxxxx";                     # 设置用于认证的提示字符串
            auth_basic_user_file  /usr/local/nginx/conf/htpasswd;   # 设置认证的密码文件
        }
    }

生成认证文件:

yum install -y httpd                                   # 要用到 http 的工具htpasswd 来产生账号和密码,所以要先安装 http
htpasswd -bc /usr/local/nginx/conf/htpasswd abc 1234   # 设置认证的账号密码,会保存在密码文件中,第一次使用要用 -bc 参数
htpasswd -b /usr/local/nginx/conf/htpasswd def 5678    # 以后使用无需加 -c 参数
chmod 400 /usr/local/nginx/conf/htpasswd
chown nginx /usr/local/nginx/conf/htpasswd
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload

访问网站提示输入用户名和密码:
技术分享图片


参考资料

http://tengine.taobao.org/nginx_docs/cn/docs/http/ngx_http_auth_basic_module.html


以上是关于nginx 使用密码认证的主要内容,如果未能解决你的问题,请参考以下文章

Nginx密码认证排除一个目录

Nginx认证

markdown Docker Nginx反向代理+密码认证+ http

Nginx系列——认证

Nginx 加认证

nginx开启认证