nginx浏览器开启密码验证

如果我们在 nginx 下搭建了一些站点,但是由于站点内容或者流量的关系,我们并不想让所有人都能正常访问,那么我们可以设置访问认证。只有让用户输入正确的用户名和密码才能正常访问。效果如下:

在 nginx 下,提供了 ngx_http_auth_basic_module 模块实现让用户只有输入正确的用户名密码才允许访问web内容。默认情况下,nginx 已经安装了该模块。所以整体的一个过程就是先用第三方工具设置用户名、密码(其中密码已经加过密),然后保存到文件中,接着在 nginx 配置文件中根据之前事先保存的文件开启访问验证。

生成密码可以使用 htpasswd,或者使用 openssl 。下面以 htpasswd 为例。

1.安装 htpasswd 工具

这里直接 yum 进行安装,你也可根据需要选择编译安装:


1

[root@uuu ~]# yum  -y install httpd-tools

设置用户名和密码,并把用户名、密码保存到指定文件中:


1

2

3

4

[root@uuu ~]# htpasswd -c /usr/local/src/nginx/passwd coderschool

New password: 

Re-type new password: 

Adding password for user coderschool 

注意:上面的 /usr/local/src/nginx/passwd 是生成密码文件的路径,然后 coderschool 是用户名,你可以根据需要自行设置成其它用户名。运行命令后,会要求你连续输入两次密码。输入成功后,会提示已经为 conerschool 这个用户添加了密码。

我们可以看下最后生成的密码文件的内容:


1

2

[root@uuu ~]# cat /usr/local/src/nginx/passwd 

coderschool:$apr1$DhlW8hIu$BXyCQ7hiEos1DiqgwEYcZ1

其中用户名就是 coderschool ,分号后面就是密码(已经加过密)。

2.修改 nginx 配置文件

找到 nginx 配置文件,因为我们要对整个站点开启验证,所以在配置文件中的第一个server修改如下:


1

2

3

4

5

6

7

8

9

10

11

12

server {

   listen 80;

   server_name  localhost;

   .......

   #新增下面两行

   auth_basic "Please input password"; #这里是验证时的提示信息 

   auth_basic_user_file /usr/local/src/nginx/passwd;

   location /{

   .......

}

然后重启 nginx:


1

2

3

4

[root@uuu sbin]# ./nginx -t

nginx: the configuration file /usr/local/src/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/src/nginx/conf/nginx.conf test is successful

[root@uuu sbin]# ./nginx -s reload

以上都配置无误后,你重新访问你的站点,如果出现需要身份验证的弹窗就说明修改成功了。下面介绍 htpasswd 命令的一些参数。

3.htpasswd选项参数


1

2

3

4

htpasswd [-cmdpsD] passwordfile username

htpasswd -b[cmdpsD] passwordfile username password

htpasswd -n[mdps] username

htpasswd -nb[mdps] username password

htpasswd命令选项参数说明
-c 创建一个加密文件
-n 不更新加密文件,只将htpasswd命令加密后的用户名密码显示在屏幕上
-m 默认htpassswd命令采用MD5算法对密码进行加密
-d htpassswd命令采用CRYPT算法对密码进行加密
-p htpassswd命令不对密码进行进行加密,即明文密码
-s htpassswd命令采用SHA算法对密码进行加密
-b htpassswd命令行中一并输入用户名和密码而不是根据提示输入密码
-D 删除指定的用户

htpasswd例子

a、如何利用htpasswd命令添加用户?


1

htpasswd -bc ./.passwd tonyzhang pass

在当前目录下生成一个.passwd文件,用户名tonyzhang ,密码:pass,默认采用MD5加密方式

b、如何在原有密码文件中增加下一个用户?


1

htpasswd -b ./.passwd onlyzq pass

去掉c选项,即可在第一个用户之后添加第二个用户,依此类推

c、如何不更新密码文件,只显示加密后的用户名和密码?


1

htpasswd -nb tonyzhang pass

不更新.passwd文件,只在屏幕上输出用户名和经过加密后的密码

d、如何利用htpasswd命令删除用户名和密码?


1

htpasswd -D .passwd tonyzhang

e、如何利用 htpasswd 命令修改密码?


1

2

htpasswd -D .passwd tonyzhang

htpasswd -b .passwd tonyzhang pass

原文地址:https://www.cnblogs.com/fuyuteng/p/10635319.html

时间: 2024-10-03 21:22:55

nginx浏览器开启密码验证的相关文章

redis安装配置-开启密码验证

redis安装 下载redis最新稳定版本官网地址:https://redis.io/,我下载的是http://download.redis.io/releases/redis-3.2.8.tar.gz 将redis-3.2.8.tar.gz上传至Linux(CentOs6.5 64位)的/home目录下: 解压redis-3.2.8.tar.gz 1 tar -xvf redis-3.2.8.tar.gz 2 cd redis-3.2.8 3 make PREFIX=/usr/local/re

MongoDB开启用户名密码验证

mongodb将所有的用户信息存在admin数据库的集合system.users中,这些信息主要包括用户名.密码和数据库信息.mongodb默认不启用授权认证,只要能连接到该服务器,就可连接到mongod.若要启用安全认证,Windows下需要更改注册表,Linux下则要更改配置文件.这里只介绍Windows下的操作. 一.创建管理员用户 1 用show dbs查看数据库,发现找不到admin数据库 2 创建用户admin db.createUser( { "user":"a

Linux进阶之给nginx设置登录用户验证

一.nginx开启访问验证 使用nginx搭建的站点,如果不想让所有人都能正常访问,那么可以设置访问认证,只有用户输入正确的用户名和密码才能正常访问. 在nginx下,提供了ngx_http_auth_basic_module 模块实现让用户只有输入正确的用户名密码才允许访问web内容.默认情况下,nginx 已经安装了该模块.所以整体的一个过程就是先用第三方工具( htpasswd,或者使用 openssl)设置用户名.密码(其中密码已经加过密),然后保存到文件中,接着在 nginx 配置文件

NGINX模块开发 之 验证URL参数

作者:邹祁峰 邮箱:[email protected] 博客:http://blog.csdn.net/qifengzou 日期:2014.05.26 16:45 转载请注明来自"祁峰"的CSDN博客 要求在浏览器地址栏中输入"localhost/login?user=qifeng&passwd=123456",并在浏览器上显示验证结果(Success 或 Failed).以下是在NGINX中添加一个LOGIN模块的整个处理过程. 1 修改配置 修改配置文件

centos6.5中部署Zeppelin并配置账号密码验证

centos6.5中部署Zeppelin并配置账号密码验证1.安装JavaZeppelin支持的操作系统如下图所示.在安装Zeppelin之前,你需要在部署的服务器上安装Oracle JDK 1.7或以上版本, 并配置好相应的JAVA_HOME环境变量.以CentOS为例,具体操作过程如下: a)下载并安装jdk-8u111-linux-x64.rpm # rpm -ivh jdk-8u111-linux-x64.rpm b)配置环境变量.在/etc/profile文件结尾添加: export

带你使用Nginx实现HTTPS双向验证

https单向验证应用广泛想必大家都很熟悉,我已经在一篇博文中分享过,这次来看看Nginx如何实现双向验证. 单向验证与双向验证的区别: 单向验证: 指客户端验证服务器端证书,服务器并不需要验证客户端证书. 双向验证:指客户端验证服务器端证书,而服务器也需要通过CA的公钥证书来验证客户端证书. 详细的握手过程: 单向验证 浏览器发送一个连接请求给安全服务器. 1.服务器将自己的证书,以及同证书相关的信息发送给客户浏览器. 2.客户浏览器检查服务器送过来的证书是否是由自己信赖的CA中心所签发的.如

SSHH 免密码验证生产环境分发、管理、备份笔记01

SSHH 免密码验证生产环境分发.管理.备份实战应用指南 ssh是secure shell protocol的简写,它通过对联机数据包加密的技术进行数据传递.专门为远程登录会话 和其他网络服务提供安全的协议. ssh本身提供两个服务功能:一个是类似telnet的远程联机使用shell服务,即俗称的ssh; 另外一个是类似FTP服务的sftp-server,可以提供更安全的TFP. 从客户端来看,ssh提供两种级别的安全验证. 第一种级别(基于口令的安全验证) 只要你知道自己的账号和口令,就可以登

Centos7+Openvpn使用用户及密码验证登陆

我们上一篇文章介绍了Centos7+Openvpn使用证书验证登陆介绍,今天我们介绍Centos7+Openvpn使用用户及密码登陆验证,具体就补多少了,环境还是基于上一篇的更改来完成. 我们使用Centos7+Openvpn使用用户及密码登陆验证小下载一个验证脚本来完成用户验证登陆. http://openvpn.se/files/other/checkpsw.sh #!/bin/sh ######################################################

​实现以账号密码验证的VPN服务器

声明 作者:昨夜星辰 博客:http://yestreenstars.blog.51cto.com/ 本文由本人创作,如需转载,请注明出处,谢谢合作! 目的 实现以账号密码验证的VPN服务器. 环境 服务端:CentOS 6.2 32 客户端:Windows XP 服务端配置 # 关闭SELinux sed -i '/^SELINUX\b/s/=.*/=disabled/' /etc/selinux/config setenforce 0 # 安装mysql-server yum -y inst