Linux进阶之给nginx设置登录用户验证
一、nginx开启访问验证
使用nginx搭建的站点,如果不想让所有人都能正常访问,那么可以设置访问认证,只有用户输入正确的用户名和密码才能正常访问。
在nginx下,提供了ngx_http_auth_basic_module 模块实现让用户只有输入正确的用户名密码才允许访问web内容。默认情况下,nginx 已经安装了该模块。所以整体的一个过程就是先用第三方工具( htpasswd,或者使用 openssl)设置用户名、密码(其中密码已经加过密),然后保存到文件中,接着在 nginx 配置文件中根据之前事先保存的文件开启访问验证。
二、以htpasswd为例
1、安装htpasswd工具
[root@ren5 ~]# yum -y install nginx #安装nginx
[root@ren5 ~]# yum -y install httpd-tools #安装httpd-tools
2、设置指定用户及密码
[root@ren5 ~]# cd /etc/nginx/
[root@ren5 nginx]# touch .passwd #创建生成密码的文件
[root@ren5 nginx]# htpasswd -c /etc/nginx/.passwd ren5 #设置用户名和密码,并把用户名、密码保存到指定文件中
New password:
Re-type new password:
Adding password for user ren5
注意:上面的 /etc/nginx/.passwd 是生成密码文件的路径,然后ren5是用户名,你可以根据需要自行设置成其它用户名。运行命令后,会要求你连续输入两次密码。输入成功后,会提示已经为ren5这个用户添加了密码。
[root@ren5 nginx]# cat .passwd #查看生成的密码文件的内容
ren5:$apr1$Lna.yg7m$n6g9180iZQP7GXJ447CE0/ #用户名ren5,冒号后面是密码(已经加密)
3、修改nginx配置文件
[root@ren5 nginx]# vim nginx.conf #在第一个server模块下添加
#############################################
location / {
auth_basic "Please input password";
auth_basic_user_file /etc/nginx/.passwd;
}
################################################
[root@ren5 nginx]# nginx -t #检查配置文件是否有误
[root@ren5 nginx]# systemctl restart nginx #重启nginx
[root@ren5 nginx]# firewall-cmd --add-port=80/tcp #添加防火墙端口
Success
4、浏览器访问
出现身份验证
3、htpasswd 命令
三、htpasswd选项参数
htpasswd [ -c ] [ -i ] [ -m | -B | -d | -s | -p ] [ -C cost ] [ -D ] [ -v ] passwdfile username
htpasswd -b [ -c ] [ -m | -B | -d | -s | -p ] [ -C cost ] [ -D ] [ -v ] passwdfile username password
htpasswd -n [ -i ] [ -m | -B | -d | -s | -p ] [ -C cost ] username
htpasswd -nb [ -m | -B | -d | -s | -p ] [ -C cost ] username password
1、htpasswd命令选项参数说明:
-c 创建一个加密文件
-n 不更新加密文件,只将htpasswd命令加密后的用户名,密码显示在屏幕上
-m 默认htpassswd命令采用MD5算法对密码进行加密
-d htpassswd命令采用CRYPT算法对密码进行加密
-p htpassswd命令不对密码进行进行加密,即明文密码
-s htpassswd命令采用SHA算法对密码进行加密
-b htpassswd命令行中一并输入用户名和密码而不是根据提示输入密码
-D 删除指定的用户
2、htpasswd例子
(1)用htpasswd命令添加用户
[root@ren5 nginx]# htpasswd -bc .passwd ren001 123
#在当前目录下生成一个.passwd文件,用户名ren001,密码:123,默认采用MD5加密方式
(2)在原有密码文件中增加下一个用户
[root@ren5 nginx]# htpasswd -b .passwd ren002 456
[root@ren5 nginx]# cat .passwd
ren001:$apr1$Ln1ZsyVn$2hn3VFqP0L5tNA1UCSU8F.
ren002:$apr1$hCiMb9jc$Z.m7ZgOBCj0ISeIieTaVy/
#去掉c选项,即可在第一个用户之后添加第二个用户,依此类推
(3)不更新密码文件,只显示加密后的用户名和密码
[root@ren5 nginx]# htpasswd -nb ren002 456
ren002:$apr1$DT53A20W$YRS7p4j.1Wum9q0kG3OQv.
#不更新.passwd文件,只在屏幕上输出用户名和经过加密后的密码
(4)用htpasswd命令删除用户名和密码
[root@ren5 nginx]# htpasswd -D .passwd ren002
Deleting password for user ren002
[root@ren5 nginx]# cat .passwd
ren001:$apr1$Ln1ZsyVn$2hn3VFqP0L5tNA1UCSU8F.
(5)用 htpasswd 命令修改密码
[root@ren5 nginx]# htpasswd -D .passwd ren001
Deleting password for user ren001
[root@ren5 nginx]# htpasswd -b .passwd ren001 123456
Adding password for user ren001
Linux进阶之给nginx设置登录用户验证的更多相关文章
- SQLSERVER误删除了Windows登录用户验证方式使用Windows身份验证的解决方法
SQLSERVER误删Windows登录用户验证方式使用Windows身份验证的解决方法 今天看到这篇文章:没有了SA密码,无法Windows集成身份登录,DBA怎么办? 想起来之前着急哥问我的一个问 ...
- linux 下如何查看和踢除正在登陆的其它用户 ==>Linux下用于查看系统当前登录用户信息的4种方法
在linux系统中用pkill命令踢出在线登录用户 由于linux服务器允许多用户登录,公司很多人知道密码,工作造成一定的障碍 所以需要有时踢出指定的用户 1/#who 查出当前有那些终端登录(用 ...
- Linux下用于查看系统当前登录用户信息 w命令
作为系统管理员,你可能经常会(在某个时候)需要查看系统中有哪些用户正在活动.有些时候,你甚至需要知道他(她)们正在做什么.本文为我们总结了4种查看系统用户信息(通过编号(ID))的方法. 1. 使用w ...
- Linux下用于查看系统当前登录用户信息的4种方法
1. 使用w命令查看登录用户正在使用的进程信息 w命令用于显示已经登录系统的用户的名称,以及他们正在做的事.该命令所使用的信息来源于/var/run/utmp文件.w命令输出的信息包括: 用户名称 用 ...
- 【linux命令】:查看当前登录用户的信息,本文介绍3种方法
作为系统管理员,你可能经常会(在某个时候)需要查看系统中有哪些用户正在活动.有些时候,你甚至需要知道他(她)们正在做什么.本文为我们总结了4种查看系统用户信息(通过编号(ID))的方法. 1. 使用w ...
- kibana通过nginx配置访问用户验证
背景: 现在搭建好了efk,其中kibana是可以在网页上访问的可视化工具,搭建好的kibana默认没有访问控制权限,任何人都能访问,这样存在一些安全隐患和隐私问题.这里我把设置的访问验证过程记录一下 ...
- SQLSERVER误删Windows登录用户验证方式使用Windows身份验证的解决方法
今天看到这篇文章:没有了SA密码,无法Windows集成身份登录,DBA怎么办? 想起来之前着急哥问我的一个问题,一个DBA删除了Windows登录用户,而且SQLSERVER服务器的验证方式是Win ...
- Linux系统下强制踢掉登录用户
1,利用who命令,找出用户登录的终端代号 who root pts/0 2017-03-14 22:30 (223.1.1.1) root pts/1 2 ...
- linux进阶之远程免密登录,动态添加磁盘及个别基础命令
一. 免密登录(远程连接ssh) ssh IP #连接登录到其它机 ssh 192.168.10.102 ssh IP "CMD" #在其它机器上执行命令 yum -y i ...
随机推荐
- Java高级【Junit、反射、注解】
1.Junit单元测试 * 测试分类: 1. 黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值. 2. 白盒测试:需要写代码的.关注程序具体的执行流程. * Junit使用 ...
- 使用docker快速安装软件
安装mysql mkdir /opt/mysql /opt/mysql/etc /opt/mysql/data docker run -itd --name mariadb -e MYSQL_ROOT ...
- 机器学习03-sklearn.LinearRegression 源码学习
在上次的代码重写中使用了sklearn.LinearRegression 类进行了线性回归之后猜测其使用的是常用的梯度下降+反向传播算法实现,所以今天来学习它的源码实现.但是在看到源码的一瞬间突然有种 ...
- Docker笔记(二) 安装常用软件
常用环境安装 这里收集一些常用环境的安装步骤,可直接复制进行使用,节省安装时间,后续会随时补充 安装MySQL5.7.32 下载mysql5.7.32的镜像 ( 记得下载镜像要先确保镜像仓库中存在这个 ...
- 08- Tomcat入门与环境搭建部署
环境搭建:网站文件(开发人员提供),相关软件(web服务器,应用服务器,数据库软件),硬件(服务器设备上),网络环境. 开发人员提供:部署文档说明书(操作系统版本,硬件配置,服务器软件及相关版本,部署 ...
- linux 安装rabbitMQ详细教程
经过第一次的安装失败, 第二次总算是成功了, 这里总结一下. 第一步:下载版本对应的rpm安装包 1. 下载Erlang安装包:RabbitMQ是Erlang语言编写,所以Erang环境必须要有,注: ...
- hdu1816 + POJ 2723开锁(二分+2sat)
题意: 有m层门,我们在最外层,我们要一层一层的进,每一层上有两把锁,我们只要开启其中的一把们就会开,我们有n组钥匙,每组两把,我们只能用其中的一把,用完后第二把瞬间就会消失,问你最多能开到 ...
- Intel汇编语言程序设计学习-第三章 汇编语言基础-下
3.4 定义数据 3.4.1 内部数据类型 MASM定义了多种内部数据类型,每种数据类型都描述了该模型的变量和表达式的取值集合.数据类型的基本特征是以数据位的数目量的大小:8,16,32,,48, ...
- java随堂笔记
JAVA 1只要是字符串,必然就是对象. 2API文档的基本使用 3如何创建字符串: a直接赋值双引号,也是一个字符串对象. b可以通过new关键字来调用String的构造方法 public Stri ...
- thinkphp中常用到的sql操作
1.清空某表数据: $sql = 'truncate table table_name'; Db::execute($sql );