Nginx添加htpasswd认证
参考:
http://www.letuknowit.com/post/12.html
在Linux上编写脚本(注意权限,对脚本做了一些修改):
vi htpasswd.sh
#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
echo "====================================="
echo "# A tool like htpasswd for Nginx #"
echo "#-----------------------------------#"
echo "====================================="
workdir="/nginx/user/conf"
#set UserName
username=""
read -p "Please input UserName:" username
if [ "$username" = "" ]; then
echo "Error:UserName can't be NULL!"
exit 1
fi
echo "==========================="
echo "UserName was: $username"
echo "==========================="
#set password
unpassword=""
read -p "Please input the Password:" unpassword
if [ "$unpassword" = "" ]; then
echo "Error:Password can't be NULL!"
exit 1
fi
echo "==========================="
echo "Password was: $unpassword"
echo "==========================="
password=$(perl -e 'print crypt($ARGV[0], "pwdsalt")' $unpassword)
#set htpasswd file
htfile=""
#read -p "Please input Auth filename:" htfile
if [ "$htfile" = "" ]; then
echo "Error:Auth filename can't be NULL!"
exit 1
fi
echo "==========================="
echo "Auth File: $workdir/$htfile"
echo "==========================="
get_char()
{
SAVEDSTTY=`stty -g`
stty -echo
stty cbreak
dd if=/dev/tty bs=1 count=1 2> /dev/null
stty -raw
stty echo
stty $SAVEDSTTY
}
echo ""
echo "Press any key to Creat...or Press Ctrl+c to cancel"
char=`get_char`
if [ ! -f $workdir/$htfile.conf ]; then
make -p $workdir/$htfile.conf
echo "Create Auth file......"
fi
cat >>$workdir/$htfile.conf<<eof
$username:$password
eof
echo "Create Auth file successful,auth file path:$workdir/$htfile.conf."
cat $workdir/$htfile.conf
生成用户名密码信息
./htpasswd.sh
修改Nginx.conf配置
添加如下内容:
auth_basic "Authorized users only";
auth_basic_user_file /nginx/conf/longxibendi.auth.conf ; #这里写前面脚本返回的文件路径;
重启nginx
nginx -t
nginx -s reload