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 

即可访问。

时间: 2016-06-20

Nginx服务器中为网站或目录添加认证密码的配置详解

nginx可以为网站或目录甚至特定的文件设置密码认证.密码必须是crypt加密的.可以用apache的htpasswd来创建密码. 格式为: htpasswd -b -c site_pass username password site_pass为密码文件.放在同nginx配置文件同一目录下,当然你也可以放在其它目录下,那在nginx的配置文件中就要写明绝对地址或相对当前目录的地址. 如果你输入htpasswd命令提示没有找到命令时,你需要安装httpd.如果是centos可以执行如下来安装,

Nginx单向认证的安装配置方法

首先系统要已经安装了openssl,以下是使用openssl安装配置单向认证的执行步骤与脚本: 复制代码 代码如下: #-------------------------------------------------------- # 单向认证,就是传输的数据加密过了,但是不会校验客户端的来源 # 单项SSL连接,也就是只是客户端验证服务器证书 #-------------------------------------------------------- #创建存储路径 rm -rf /u

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中的用户认证配置及阻止用户使用代理访问的方法

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,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 "

使用Lua编写Nginx服务器的认证模块的方法

过去两天里,我解决了一个非常有趣的问题.我用一个nginx服务器作为代理,需要能够向其中添加一个认证层,使其能够使用外部的认证源(比如某个web应用)来进行验证,如果用户在外部认证源有账号,就可以在代理里认证通过. 需求一览 我考虑了几种解决方案,罗列如下: 用一个简单的Python/Flask模块来做代理和验证. 一个使用subrequests做验证的nginx模块(nginx目前可以做到这一点) 使用Lua编写一个nginxren认证模块 很显然,给整个系统添加额外请求将执行的不是很好,因为

centos7系统nginx服务器下phalcon环境搭建方法详解

本文实例讲述了centos7系统nginx服务器下phalcon环境搭建方法.分享给大家供大家参考,具体如下: 之前我们采用的是Apache服务器,可是每秒响应只能达到2000,听说nginx可以轻易破万, 于是换成nginx试试. phalcon的官网有nginx重写规则的示例,可是却与apache的不一致,被坑了好久. 1.添加nginx源 vi /etc/yum.repos.d/nginx.repo [nginx] name=nginx repo baseurl=http://nginx.

Nginx服务器中的模块编写及相关内核源码初探

1.nginx模块 首先nginx和apache最大的不同就是nginx的模块不能够动态添加,需要在编译时,指定要添加的模块路径,与nginx源码一起编译. nginx模块的处理流程: a.客户端发送http请求到nginx服务器 b.nginx基于配置文件中的位置选择一个合适的处理模块 c.负载均衡模块选择一台后端服务器(反向代理情况下) d.处理模块进行处理并把输出缓冲放到第一个过滤模块上 e.第一个过滤模块处理后输出给第二个过滤模块 f.然后第二个过滤模块又到第三个过滤模块 g.第N个过滤

Nginx服务器基本的模块配置和使用全攻略

1. 安装nginx 1.1 选择稳定版本 我们编译安装nginx来定制自己的模块,机器CentOS 6.2 x86_64.首先安装缺少的依赖包: # yum -y install gcc gcc-c++ make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel 这些软件包如果yum上没有的话可以下载源码来编译安装,只是要注意编译时默认安装的目录,确保下面在安装nginx时能够找到这些动态库文件(ldconfig). 从

详解Nginx服务器的nginx-http-footer-filter模块配置

nginx-http-footer-filter想必大家都觉得很陌生,那我们就来认识一下它吧,这是淘宝开发的nginx模块. 它用于nginx在响应请求文件底部追加内容. 今天抽空研究下这个插件,希望对大家有所帮助.为什么发现了这个插件,因为这几天公司需要在所有shtml文件后面追加一个js代码用来做统计(之前统计代码没加齐全),在寻求解决方法的过程中找到了它认识了它最后喜欢上了它,你可能以为我用这个插件去实现了我要的功能,其实在认识他之前我用shell脚本替换齐全了. 不过我还是决定研究测试一

详解Nginx服务器中map模块的配置与使用

map指令使用ngx_http_map_module模块提供的.默认情况下,nginx有加载这个模块,除非人为的 --without-http_map_module. ngx_http_map_module模块可以创建变量,这些变量的值与另外的变量值相关联.允许分类或者同时映射多个值到多个不同值并储存到一个变量中,map指令用来创建变量,但是仅在变量被接受的时候执行视图映射操作,对于处理没有引用变量的请求时,这个模块并没有性能上的缺失. 一. ngx_http_map_module模块指令说明

配置Nginx服务器防止Flood攻击的方法

 测试 我会简单的告诉你如何配置Nginx的限制请求模块并且它是如何保护你的网站,防止你被攻击与DDOS或是其他基于HTTP的拒绝服务攻击. 这个测试中,我将样本页在保存在Blitz.io(现在是免费服务)命名为about.html,用于测试limit_req指令. 首先,我在Blitz上使用下面的指令,用来发起1075个并发请求并且持续一分钟,响应超时设置为2分钟,区域为加州,同时设置了除掉状态200以外的其他状态全部为异常状态,甚至是503都被认为是没有成功. -p 1-1075:60 --

Nginx服务器高性能优化的配置方法小结

通常来说,一个优化良好的 Nginx Linux 服务器可以达到 500,000 – 600,000 次/秒 的请求处理性能,然而我的 Nginx 服务器可以稳定地达到 904,000 次/秒 的处理性能,并且我以此高负载测试超过 12 小时,服务器工作稳定. 这里需要特别说明的是,本文中所有列出来的配置都是在我的测试环境验证的,而你需要根据你服务器的情况进行配置: 从 EPEL 源安装 Nginx: yum -y install nginx 备份配置文件,然后根据你的需要进行配置: cp /e

Nginx重新编译添加模块的方法

编译安装Nginx的时候,有些模块默认并不会安装,比如http_ssl_module,那么为了让Nginx支持HTTPS,必须添加这个模块. 下面讲解如何在已经安装过后再次添加新的模块. 1.找到安装nginx的源码根目录(即安装包存放目录),如果没有的话下载新的源码并解压 cd software ls nginx-1.10.2 nginx-1.10.2.tar.gz 2.查看nginx版本极其编译参数 /usr/local/nginx/sbin/nginx -V 3.进入nginx源码目录 c

一台nginx服务器多域名配置的方法

Nginx强大的正则表达式支持,可以使server_name的配置变得很灵活,如果你要做多用户博客,那么每个用户拥有自己的二级域名也就很容易实现了. 下面我就来说说server_name的使用吧: server_name的匹配顺序 Nginx中的server_name指令主要用于配置基于名称虚拟主机,server_name指令在接到请求后的匹配顺序分别为: 1.准确的server_name匹配,例如: server { listen 80; server_name ssdr.info www.s