Nginx配置Basic Auth登录认证
有时候我们通过nginx搭建了一台文件服务器, 一般来讲是公开的, 但我们又希望该服务器不让他人看到, 有人可能会搭建一个登录系统, 但是太麻烦, 也没太大必要, 比较简单的做法是配置Basic Auth登录认证(ngx_http_auth_basic_module)。
nginx编译时默认已经包含这个模块,我们只需要做一下简单的配置即可实现http认证。
1、确定你安装了httpd-tools
1 2 3 4 5 6 7 |
# 检测是否已经安装了 httpd $ httpd -v Server version: Apache/2.4.34 (Unix) Server built: Feb 22 2019 20:20:11 # 没安装的执行 yum install httpd-tools -y |
2、创建授权用户和密码
htpasswd可以用于生成用户信息
生成用户及密码
1 2 3 |
htpasswd -c -d /usr/local/openresty/nginx/conf/auth_file user # 这个配置文件存放路径可以自定义,方便管理就行, 其中user是允许登录的用户名(可以自定义) |
htpasswd其它操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#删除用户 #htpasswd -D /etc/nginx/.passwd daichongweb #修改密码 #htpasswd -d /etc/nginx/.passwd daichongweb123 #其他命令 -c:创建一个加密文件 -n:不更新加密文件,只将加密后的用户名密码显示在屏幕上 -m:默认采用MD5算法对密码进行加密 -d:采用CRYPT算法对密码进行加密 -p:不对密码进行进行加密,即明文密码 -s:采用SHA算法对密码进行加密 -b:在命令行中一并输入用户名和密码而不是根据提示输入密码 -D:删除指定的用户 |
3、配置Nginx Basic Auth
大致配置如下:
1 2 3 4 |
location / { auth_basic "这里随意起个名字"; auth_basic_user_file /usr/local/openresty/nginx/conf/auth_file; } |
- auth_basic 认证开关,默认是off(即关闭认证)。除了off以外的都是启用auth。
- auth_basic_user_file 账户密码文件,可以通过htpasswd生成,路径一定要和上一步的目录相同。
4、使用
1 2 3 4 5 6 7 8 |
# 浏览器中使用 直接在浏览器中输入地址, 会弹出用户密码输入框, 输入即可访问 # 使用 wget wget --http-user=user --http-passwd=123456 http://localhost/ # 使用 curl curl -u user:123456 -O http://localhost/ |
5、访问限制
经常看体验盒子文章的同学会发现,之前我们分享了很多弱口令暴力破解的项目,其中就有域用户密码破解的,为了防止暴力破解,我们可以用nginx的ngx_http_limit_req_module模块进行访问限制。更多nginx安全设置可参考《Nginx与安全有关的一些配置》。
1 2 3 4 5 6 7 8 9 |
limit_req_zone $binary_remote_addr zone=limiter:10m rate=20r/s; server { .... location / { auth_basic "closed site"; auth_basic_user_file conf/htpasswd; limit_req zone=limiter burst=1 nodelay; } } |
上面表示同一ip地址1秒最多只能访问20次,超过限制会立即返回错误。
参
原文连接:Nginx配置Basic Auth登录认证,要求用户名密码
所有媒体,可在保留署名、
原文连接
的情况下转载,若非则不得使用我方内容。