# Ngx配置用户名密码访问



### 环境信息

> 操作系统：CentOS 7.4 IP：192.168.0.111 在 Nginx 下，提供了 ngx\_http\_auth\_basic\_module 模块实现让用户只有输入正确的用户名密码才允许访问web内容。默认情况下，Nginx 已经安装了该模块。

1、先用第三方工具设置用户名、密码（其中密码已经加过密），然后保存到文件中， 2、接着在 Nginx 配置文件中根据之前事先保存的文件开启访问验证。

### 如何配置？

```bash
yum -y install httpd-tools
mkdir /usr/local/nginx/auth
htpasswd -bc /usr/local/nginx/auth/passwd admin 123456
cat /usr/local/nginx/auth/passwd
# /usr/local/nginx/auth/passwd 是生成密码后的文件保存路径(passwdfile)，admin是用户名（username）, 123456是密码
```

```bash
vi /usr/local/nginx/conf/nginx.conf
'''
	''' server 中添加
	auth_basic "Please input password";
	auth_basic_user_file /usr/local/nginx/auth/passwd;
'''


/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
```

***

### 参数详解

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

```bash
# 新增用户
htpasswd -b [passwdfile] [username] [passwd]

# 删除用户
htpasswd -D /usr/local/nginx/auth/passwd test

# 创建文件，添加用户（注意密码文件，否则已存在文件会覆盖原内容）
htpasswd -bc /usr/local/nginx/auth/passwd Test 123
```
