Nginx上配置Basic Authorization登录认服务证的教程

关于Basic Authorization
在HTTP中,Basic Authorization基本认证是一种用来允许Web浏览器或其他客户端程序在请求时提供用户名和口令形式的身份凭证的一种登录验证方式。
在发送之前是以用户名追加一个冒号然后串接上口令,并将得出的结果字符串再用Base64算法编码。例如,提供的用户名是Aladdin、口令是open sesame,则拼接后的结果就是Aladdin:open sesame,然后再将其用Base64编码,得到QWxhZGRpbjpvcGVuIHNlc2FtZQ==。最终将Base64编码的字符串发送出去,由接收者解码得到一个由冒号分隔的用户名和口令的字符串。
虽然对用户名和口令的Base64算法编码结果很难用肉眼识别解码,但它仍可以极为轻松地被计算机所解码,就像其容易编码一样。编码这一步骤的目的并不是安全与隐私,而是为将用户名和口令中的不兼容的字符转换为均与HTTP协议兼容的字符集。
优点:

  • 使用非常简单,
  • 开发和调试工作简单,
  • 没有复杂的页面跳转逻辑和交互过程;
  • 更利于发起方控制。

下面我们就来正式看一下如何在Nginx上配置一个Basic Auth认证的下载服务:

建用户和文件夹
新建用户 shareuser:
建data文件夹,并

  chown -R shareuser:shareuser /path/to/data  

列出指定目录下的文件:
需要的指令是autoindex on;, 即可列出该目录下的所有文件并可以递归计入子目录。
还有两个辅助的指令

  • autoindex_exact_size on | off; , 即文件大小以字节数显示还是K/M/G显示
  • autoindex_localtime on | off; 以local timezone还是UTC显示文件的修改时间。

配置Basic Auth

两个指令

  • auth_basic "Restricted";
  • auth_basic_user_file ./passwd;

auth_basic_user_file是一个存储用户名密码的文件。需要htpasswd命令来生成,

密码文件生成
首先需要安装

  sudo apt-get install apache2-utils  

命令

  htpasswd -c /path/to/passwd username  

-c 是新建一个文件, 如果是append到已有文件,不用该选项。
根据提示输入密码即可。
Config Sample
测试项目文件结构如下:

  app   conf   nginx.conf     passwd   data  

最终的结果如下:

 

   user shareuser;     server {    listen 8011;      root data;    # index index.html index.htm; #关闭index, 否则会显示index.html而不是列出文件      location / {     autoindex on;     autoindex_exact_size off;     autoindex_localtime on;       auth_basic "Restricted";     auth_basic_user_file passwd;    }   }  }    

启动

   nginx -p /path/to/app -c conf/nginx.conf 

即可访问。

参与评论