Nginx 设置 HTTP Basic 基本验证

Reading time ~1 minute

1. 概述

1.1 背景

在HTTP协议进行通信的过程中,HTTP协议定义了基本认证过程以允许HTTP服务器对WEB浏览器进行用户身份证的方法,当一个客户端向HTTP服务 器进行数据请求时,如果客户端未被认证,则HTTP服务器将通过基本认证过程对客户端的用户名及密码进行验证,以决定用户是否合法。客户端在接收到HTTP服务器的身份认证要求后,会提示用户输入用户名及密码,然后将用户名及密码以BASE64加密,加密后的密文将附加于请求信息中, 如当用户名为anjuta,密码为:123456时,客户端将用户名和密码用“:”合并,并将合并后的字符串用BASE64加密为密文,并于每次请求数据 时,将密文附加于请求头(Request Header)中。HTTP服务器在每次收到请求包后,根据协议取得客户端附加的用户信息(BASE64加密的用户名和密码),解开请求包,对用户名及密码进行验证,如果用 户名及密码正确,则根据客户端请求,返回客户端所需要的数据;否则,返回错误代码或重新要求客户端提供用户名及密码。

1.2 环境

  • Cnet OS 7
  • Nginx 1.10.2

安装依赖sudo yum install openssl

2. Nginx Basic Auth指令

  1. auth_basic
  • 语法: auth_basic string | off;
  • 默认值: auth_basic off;
  • 配置段: http, server, location, limit_except
  • 默认表示不开启认证,后面如果跟上字符,这些字符会在弹窗中显示。
  1. auth_basic_user_file
  • 语法: auth_basic_user_file file;
  • 默认值:
  • 配置段: http, server, location, limit_except
  • 用户密码文件,文件内容类似如下:
ttlsauser1:password1
ttlsauser2:password2:comment

3. 编辑配置文件

vim conf/nginx.conf

location ~* /static/ {
        root   html;
        index  static.html;
        auth_basic "Restricted";
        auth_basic_user_file /home/quizgo/programs/nginx-1.10.2/conf/htpasswd;
        autoindex on;  #启用目录浏览
        autoindex_exact_size off;  #显示出文件的大概大小,单位是kB或者MB或者GB
        autoindex_localtime on;  #显示的文件时间为文件的服务器时间
}

“Restricted” 单词将会出现在第一次访问Nginx站点的弹出框内。

4. 生成密码

执行命令:printf "admin:$(openssl passwd -crypt 123456)\n" >>conf/htpasswd

cat conf/htpasswd

admin:CRUBApRA2yXEk

重启Nginx

sbin/nginx -s reload

5. 验证

在浏览器中输入对应的网址,则会出现如下所示

Alt text

6. 问题处理

6.1 问题一

如果在执行命令的时候出现如下错误,这个问题是由于openssl库的位置不正确造成的。

openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory

解决办法

sudo ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1
sudo ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1

转载请注明出处:
文章地址:Nginx 设置 HTTP Basic 基本验证
文章作者:凌风
原始连接:https://lingfeng.me/blog/nginx/nginx-basic-auth/
许可协议:转载请注明原文链接及作者。

系列博文:Nginx系列文章

HomeBrew 安装及常用命令

HomeBrew 是 Mac OSX 上的软件包管理工具,能在 Mac 中方便的安装软件或者卸载软件, 使用命令,非常方便。 Continue reading