Nginx配置Basic Auth认证实现

### 关于Basic Authorization
在HTTP中,Basic Authorization基本认证是一种用来允许Web浏览器或其他客户端程序在请求时提供用户名和口令形式的身份凭证的一种登录验证方式。

在发送之前是以用户名追加一个冒号然后串接上口令,并将得出的结果字符串再用Base64算法编码。例如,提供的用户名是Aladdin、口令是open sesame,则拼接后的结果就是Aladdin:open sesame,然后再将其用Base64编码,得到QWxhZGRpbjpvcGVuIHNlc2FtZQ==。最终将Base64编码的字符串发送出去,由接收者解码得到一个由冒号分隔的用户名和口令的字符串。

虽然对用户名和口令的Base64算法编码结果很难用肉眼识别解码,但它仍可以极为轻松地被计算机所解码,就像其容易编码一样。编码这一步骤的目的并不是安全与隐私,而是为将用户名和口令中的不兼容的字符转换为均与HTTP协议兼容的字符集。

首先我们需要用来存储用户名和密码的文件,通过htpasswd命令来生成,这是apache提供的一个工具,如果你没有装可以用在线生产的方式来生成。
在线生成网址:tool.luoschina

htpasswd -c -d /etc/nginx/pass_file  username
//输入以上命令,回车输入密码,再次回车,输入确认密码

然后修改nginx 的配置文件,加入如下代码即可。

location ~ /admin {
    auth_basic "Restricted";
    auth_basic_user_file /etc/nginx/pass_file;
    //存储用户名和密码的文件。
    root /home/www/admin;
    //host 地址,不然认证通过之后,找不到对应的文件
}

重载nginx配置文件,访问你设置的网址及路径,如果弹出授权框即为成功。

supervisor 的安装与使用

linux的后台进程运行有好几种方法,例如nohup,screen等,但是,如果是一个服务程序,要可靠地在后台运行,我们就需要把它做成daemon,最好还能监控进程状态,在意外结束时能自动重启。

supervisor就是使用python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。

centos安装supervisor:

yum install python-setuptools
easy_install supervisor

echo_supervisord_conf > /etc/supervisord.conf
//生成配置文件

vim /etc/supervisord.conf
//在supervisord.conf最下面新增配置
------
[program:bandwidth]
command=python26 /usr/local/bin/bandwidth.sh
//需要执行的命令
user =root
//(default  is  current  user , required  if  root)
autostart=true
//start at supervisord start (default: true)
autorestart=true
//whether/when to restart (default: unexpected)
startsecs=3
//number of secs prog must stay running ( def . 1)
stderr_logfile=/tmp/bandwidth_err.log
//redirect proc stderr to stdout (default false) 错误输出重定向
stdout_logfile=/tmp/bandwidth.log
//stdout log path, NONE  for  none; default AUTO, log输出

//更多配置说明请参考:http://supervisord.org/configuration.html
------

supervisord -c /etc/supervisord.conf
//启动supervisor

Debian/Ubuntu 安装supervisor:

apt-get install supervisor
vim /etc/supervisor/conf.d/bandwidth.conf
//新增一个配置文件
------
[program:bandwidth]
command = python26 /usr/local/bin/bandwidth.sh
directory = /usr/local/bin/
user = root
autostart = true
autorestart = true
//配置同上,不过需要注意一定要有directory
------

supervisorctl update
supervisorctl start bandwidth

常用状态命令:

supervisorctl
//直接进入命令行模式
supervisorctl status
//查看运行状态
supervisorctl help
//查看帮助
supervisorctl reload
//重载配置文件
supervisorctl stop [name]
//停止运行[name]
supervisorctl start [name]
//开始运行[name]

//更多命令请参考:http://supervisord.org/