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
即可访问。
相关推荐
-
Nginx中的用户认证配置及阻止用户使用代理访问的方法
nginx用户认证配置( Basic HTTP authentication) ngx_http_auth_basic_module模块实现让访问着,只有输入正确的用户密码才允许访问web内容.web上的一些内容不想被其他人知道,但是又想让部分人看到.nginx的http auth模块以及Apache http auth都是很好的解决方案. 默认情况下nginx已经安装了ngx_http_auth_basic_module模块,如果不需要这个模块,可以加上 --without-http_auth
-
Nginx用户认证配置方法详解(域名/目录)
Nginx可以为某一个域名单独加用户认证,具体做法如下: 1. 生成用户认证的用户名和密码: 复制代码 代码如下: #wget -c soft.vpser.net/lnmp/ext/htpasswd.sh;bash htpasswd.sh 根据提示输入: 用户名:密码:文件名: 脚本会自动生成认证文件,auth.conf内容如下: 复制代码 代码如下: /usr/local/nginx/conf/auth.conf 2. 为Nginx添加auth认证配置 下面以某域名下面的auth目录为例,在域
-
Nginx中配置用户服务器访问认证的方法示例
Nginx超级强大它可以单独为一个域名设置用户认证,方法也很简单我们只要生成用户认证的用户名和密码,然后再Nginx添加auth认证配置即可. Nginx可以为某一个域名单独加用户认证,具体做法如下: 1. 生成用户认证的用户名和密码: #wget -c soft.vpser.net/lnmp/ext/htpasswd.sh;bash htpasswd.sh 根据提示输入: 用户名: 密码: 文件名: 脚本会自动生成认证文件,auth.conf内容如下: /usr/local/nginx/con
-
Nginx单向认证的安装配置方法
首先系统要已经安装了openssl,以下是使用openssl安装配置单向认证的执行步骤与脚本: 复制代码 代码如下: #-------------------------------------------------------- # 单向认证,就是传输的数据加密过了,但是不会校验客户端的来源 # 单项SSL连接,也就是只是客户端验证服务器证书 #-------------------------------------------------------- #创建存储路径 rm -rf /u
-
使用Lua编写Nginx服务器的认证模块的方法
过去两天里,我解决了一个非常有趣的问题.我用一个nginx服务器作为代理,需要能够向其中添加一个认证层,使其能够使用外部的认证源(比如某个web应用)来进行验证,如果用户在外部认证源有账号,就可以在代理里认证通过. 需求一览 我考虑了几种解决方案,罗列如下: 用一个简单的Python/Flask模块来做代理和验证. 一个使用subrequests做验证的nginx模块(nginx目前可以做到这一点) 使用Lua编写一个nginxren认证模块 很显然,给整个系统添加额外请求将执行的不是很好,因为
-
nginx,apache的alias和认证功能
从年前电脑换成linux系统后就没写东西,最近有点懒,在这里讲述下nginx alias 功能,不是server alias . 首先看下看下apache 别名 怎么配置的: 复制代码 代码如下: <VirtualHost *:80> DocumentRoot /www/jb51.net/www 这是虚拟主机的根目录吧,但是phpMYadmin 不在这个目录下,想访问. ServerName www.jb51.net ServerAlias jb51.net Alias /sdb "
-
Nginx服务器中为网站或目录添加认证密码的配置详解
nginx可以为网站或目录甚至特定的文件设置密码认证.密码必须是crypt加密的.可以用apache的htpasswd来创建密码. 格式为: htpasswd -b -c site_pass username password site_pass为密码文件.放在同nginx配置文件同一目录下,当然你也可以放在其它目录下,那在nginx的配置文件中就要写明绝对地址或相对当前目录的地址. 如果你输入htpasswd命令提示没有找到命令时,你需要安装httpd.如果是centos可以执行如下来安装,
-
Nginx上配置Basic Authorization登录认服务证的教程
关于Basic Authorization 在HTTP中,Basic Authorization基本认证是一种用来允许Web浏览器或其他客户端程序在请求时提供用户名和口令形式的身份凭证的一种登录验证方式. 在发送之前是以用户名追加一个冒号然后串接上口令,并将得出的结果字符串再用Base64算法编码.例如,提供的用户名是Aladdin.口令是open sesame,则拼接后的结果就是Aladdin:open sesame,然后再将其用Base64编码,得到QWxhZGRpbjpvcGVuIHNlc
-
Nginx配置Basic Auth登录认证的实现方法
有时候我们通过nginx搭建了一台文件服务器, 一般来讲是公开的, 但我们又希望该服务器不让他人看到, 有人可能会搭建一个登录系统, 但是太麻烦, 也没太大必要, 比较简单的做法是配置Basic Auth登录认证 1. 确定你安装了httpd-tools yum install httpd-tools -y 2. 创建授权用户和密码 htpasswd -c -d /usr/local/openresty/nginx/conf/pass_file magina 这个配置文件存放路径可以随意指定,
-
在Nginx上配置多个站点的方法
有时候你想在一台服务器上为不同的域名运行不同的站点.比如www.siteA.com作为博客,www.siteB.com作为论坛.你可以把两个域名的IP都解析到你的服务器上,但是没法在Nginx的根目录里同时运行两个不同的网站.这时候,你就需要使用虚拟目录了.假设你把博客放在"/home/user/www/blog"下,论坛放在"/home/user/www/forum"下.下面我们就开始配置了: 在Nginx配置目录下,创建一个"vhost"目录
-
ThinkPHP 在阿里云上的nginx.config配置实例详解
具体代码如下所示: # For more information on configuration, see: # * Official English Documentation: http://nginx.org/en/docs/ # * Official Russian Documentation: http://nginx.org/ru/docs/ user nginx; worker_processes auto; error_log /var/log/nginx/error.log;
-
ubuntu上配置Nginx+PHP5 FastCGI服务器配置
首先安装或编译Nginx.安装Nginx源码包可以在官方主页上下载.Ubuntu 9.04可以直接通过apt安装,也可以从这里下载最新的deb包:sudo apt-get install nginx如果要自己编译的话,需要确保自己已经有编译器和PCRE的库(用于Nginx的rewrite模块,如果不需要这个模块可以在configure时使用./configure –without-rewrite).编译方法如下:wget http://sysoev.ru/nginx/nginx-0.5.34.t
-
VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法详解
本文实例讲述了VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法.分享给大家供大家参考,具体如下: 昨天试用了VPS,花了一天部署了一个简单应用.在下面的过程中省去了用django 创建project的一步,忘记了你自己一用startporject 创建. 下面是原来边操作,边记录的东西,我习惯文本编辑.可能格式不好看.现在搬到博客中来. 首先安装GCC. yum -y install gcc automake autoconf libtool ma
-
Centos7启动流程及Systemd中Nginx启动配置
Centos7启动流程: 1.post(Power-On-Self-Test) 加电自检 1 主要实现的功能是检测各个外围硬件设备是否存在而且能够正常运行起来,实现这一自检功能的是固化在主板上的ROM(主要代表为CMOS)芯片上的BIOS(Basic Input/Output System)程序:例如BIOS会检测CPU.Memory以及I/O设备是否能够正常运行,如果是个人计算机的话可能还会检测一下显示器.只要一通电,CPU就会自动去加载ROM芯片上的BIOS程序,是这样来实现的.而检测完成之
-
CentOS6.5下Tomcat7 Nginx Redis配置步骤教程详解
所有配置均在一台机器上完成,部署拓扑信息如下: 注意:由于Redis配置对jar包和tomcat版本比较严格,请务必使用tomcat7和本文中提供的jar包. 下载地址: http://pan.baidu.com/s/1bO67Ky tomcat: tomcat1 localhost:8080 tomcat2 localhost:9080 nginx: localhost:1210 redis: localhost:6379 1. tomcat的安装和配置 1. 在server.xml文件中,修
-
微信小程序 Nginx环境配置详细介绍
微信小程序Server环境配置详解 主要内容: 1. SSL免费证书申请步骤 2. Nginx HTTPS 配置 3. TLS 1.2 升级过程 微信小程序要求使用 https 发送请求,那么Web服务器就要配置成支持 https,需要先申请SSL证书 小程序也要求 TLS(传输层安全协议)的版本至少为 1.2,在配置好 https之后,如果 TLS 的版本较低,就涉及到升级问题 所以 Server端环境配置的主要步骤: 申请 SSL 证书 配置web服务器支持https(我使用的是nginx)
随机推荐
- Centos7 下mysql重新启动MariaDB篇
- ORACLE应用经验(1)
- Nginx中虚拟主机与指定访问路径的设置方法讲解
- ASP.NET入门随想之检票的老太太
- Javascript中的数学函数
- 利用Shell脚本实现远程MySQL自动查询
- PHP之数组学习
- 不重新编译PHP为php增加openssl模块的方法
- Ajax 提交表单数据到入库的全盘操作流程分享
- mysql与mssql的md5加密语句
- php实现基于PDO的预处理示例
- SQL server高级应用 收藏版
- jQuery图片轮播实现并封装(一)
- js去除空格的12种实用方法
- 导致MyEclipse内存不足的原因分析及解决办法
- Flex 动态绑定BindingUtils.bindProperty
- Java Socket通信介绍及可能遇到的问题解决
- thinkphp实现上一篇与下一篇的方法
- C#自定义缓存封装类实例
- 浅谈php(codeigniter)安全性注意事项