Nginx配置访问用户名和密码

使用nginx直接使用的phpstudy的小皮面板搭建了一些站点,但是由于站点内容或者安全的关系,并不想让所有人都能正常访问,那么可以设置访问认证,让掌握用户名和密码才能正常访问。
在nginx下,提供了ngx_http_auth_basic_module模块实现让用户只有输入正确的用户名密码才允许访问web内容,默认情况下,nginx已经安装了该模块。
生成密码可以使用htpasswd,或者使用openssl ,下面以htpasswd为例

htpasswd

参数介绍

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

# 常用组合
#   添加用户并且创建密码文件
htpasswd -bc [passwdfile] [username] [passwd] 
htpasswd -bc ./.passwd sandu pass   # 在当前目录下生成一个.passwd文件,用户名sandu,密码:pass,默认采用MD5加密方式

#   在原有密码文件中增加下一个用户
htpasswd -b [passedfile] [username] [passwd]
htpasswd -b ./.passwd sandu1 pass   # 去掉c选项,即可在第一个用户之后添加第二个用户
#   删除用户
htpasswd -D [passwdfile] [username]
htpasswd -D .passwd sandu

# 修改密码
htpasswd -D .passwd sandu
htpasswd -b .passwd sandu pass

# 不更新密码文件,只显示加密后的用户名和密码
htpasswd -nb sandu pass


步骤

  1. 安装
yum -y install httpd-tools
  1. 生成密码文件
# 设置用户名和密码,并把用户名、密码保存到指定文件中
htpasswd -bc /www/admin/pwd/node80.pwd node80 123456
# 密码文件/www/admin/pwd/node80.pwd,用户名node80,密码123456
# 查看密码文件内容
cat /www/admin/pwd/node80.pwd
  1. 修改nginx配置文件
# 此处可在小皮面板的管理界面修改或者在系统中找到对应的配置文件进行修改
# 小皮面板nginx模块的默认配置文件位置为/usr/local/phpstudy/vhost/nginx/,推荐在管理界面进行修改
# 在相应站点下面添加如下内容:
server {
   listen 80;
   server_name  localhost;
   .......
 
   #新增下面两行
   # 验证时的提示信息 
   auth_basic "请输入xxx站点的访问密码"; 
   # 验证时需要的密码文件
   auth_basic_user_file /www/admin/pwd/node80.pwd;
 
   location /{
   .......
}
  1. 验证