场景描述

某些情况下有些资源需要一个基本的认证才能让用户访问。又不太想开发一个认证流程的东东怎么办呢?疑问

解决办法:通过nginx 配置一个基础的http用户密码认证来解决这个问题

安装nginx

这里不详细介绍如何安装,提供centos一句话安装命令吧太开心
yum install -y nginx

创建nginx访问认证文件

nginx认证文件,该文件主要是存储nginx的认证用户密码信息,其文件格式如下:
admin:r5IXRXWSmlBk6
密码应该使用crypt()函数加密。可以用Apache HTTP Server发行包中的htpasswd命令或者openssl passwd来创建此类文件。

第一种是使用Apache的htpasswd工具创建(感觉很鸡肋阴脸都有nginx了我还安装啥Apache斜眼
/opt/apache/bin/htpasswd -bdc /etc/nginx/conf.d/htpasswd admin 12345
命令解释
/opt/apache/bin/htpasswd  htpasswd工具路径
/etc/nginx/conf.d/htpasswd 生成认证文件路径
admin 12345 用户名及密码

第二种使用openssl创建认证文件(由于每个Linux服务器基本都有SSH服务,openssl也就有啦,靠谱太开心
[root@localhost cert]# openssl passwd 123456
d7FH6kfhAIIFA
[root@localhost cert]# echo 'admin:d7FH6kfhAIIFA' > /etc/nginx/cert/passwd.db
[root@localhost cert]# cat passwd.db 
admin:d7FH6kfhAIIFA
[root@localhost cert]# 

配置nginx访问认证

随便找一个nginx的虚拟访问路径进行配置吧
location / {#对所有地址进行负载均衡
                auth_basic "监控服务";#这里是认证输入用户密码时候弹出的标题
                auth_basic_user_file cert/passwd.db;#这里配置的是密码文件存放路径,相对路径为相对nginx根目录

                proxy_pass http://tomcats-monitor/;
        }#end location

主要配置为:auth_basic 、auth_basic_user_file 

重载配置nginx完成启用认证

nginx -s reload

再访问资源试试?偷笑
 
暂无评论