技术之道

长风破浪会有时,直挂云帆济沧海

  • 首页
  • 分类
  • 归档
  • 标签

  • 搜索
服务治理 k8s tabnine cursor github copilot ai chatgpt chatgpt ai sop 技术选型 bigdata 工具 多进程多线程 docker 计算机网络 mysql 事务 基础架构 kafka nio 分布式 服务搭建 监控 jvm 管理/成长 jenkins devops 云原生 nginx 架构 故障处理 hive spark mapreduce apm redis memcached java 性能 linux

Nginx配置Basic Auth登录认证

发表于 2022-08-24 | 分类于 中间件 | 0 | 阅读次数 236

Nginx配置Basic Auth登录认证

简介

Basic Auth用于服务端简单的登录认证,通常使用服务器Nginx、Apache本身即可完成。比如我们要限定某个域名或者页面必须输入用户名、密码才能登录,但又不想使用后端开发语言,此时Basic Auth就派上用场了。

Basic Auth 使用htpasswd工具进行生成 http 基本认证的密码文件。

安装htpasswd

htpasswd是Apache密码生成工具,Nginx支持auth_basic认证,因此我门可以将生成的密码用于Nginx中,输入一行命令即可安装:yum -y install httpd-tools ,参数如下:

-c 创建passwdfile.如果passwdfile 已经存在,那么它会重新写入并删去原有内容.
-n 不更新passwordfile,直接显示密码
-m 使用MD5加密(默认)
-d 使用CRYPT加密(默认)
-p 使用普通文本格式的密码
-s 使用SHA加密
-b 命令行中一并输入用户名和密码而不是根据提示输入密码,可以看见明文,不需要交互
-D 删除指定的用户

生成密码

#生成密码
htpasswd -c /usr/local/nginx/ngx_htpasswd username
#执行上命令后会要求输入两次密码,/usr/local/nginx/ngx_htpasswd 是在指定目录下创建密码文件passwd ,username即为需要设置的账号。如果文件已经存在不需要添加-c参数
New password: 
Re-type new password: 
Adding password for user ***

# 查看文件内容
cat /usr/local/nginx/ngx_htpasswd
admin:$apr1$KYInRQ0F$uIphhVnrzkrOMo3jSbeXS0

如果你不想安装htpasswd,也可以通过在线 htpasswd 生成器来完成。

载入配置

接下来在Nginx配置文件中(通常是server段内),加入如下两行,并重载Nginx(/usr/local/nginx/sbin/nginx -s reload)即可生效。

server {
    listen       80;   
    server_name  test.com;

    auth_basic   "登录认证";  
    auth_basic_user_file /usr/local/nginx/ngx_htpasswd;
}

重启Nginx服务后,访问test.com 就会要求输入用户名、密码。

备注:一定要注意auth_basic_user_file路径,如果文件不存在,会不厌其烦的出现403。

如果只想某一个页面支持Basic Auth,可以将auth_basic配置到location里:

location /test {
    auth_basic   "登录认证";  
    auth_basic_user_file /usr/local/nginx/ngx_htpasswd;
}

访问测试

再访问站点,提示需要输入用户名和密码才可以访问,此方法适合不宜公开的站点,比如PHPmyadmin,这样可避免被弱口令扫描,无疑再上了一把锁

image-20200421165712634

# nginx
centos7常用命令
Service mesh
  • 文章目录
  • 站点概览
lw‘Blogs

lw‘Blogs

自信人生二百年,会当水击三千里

80 日志
8 分类
40 标签
RSS
Github E-mail
Creative Commons
© 2025 京ICP备2022025426号-1