说明:ngx_http_auth_basic_module
模块实现让访问者只有输入正确的用户密码才允许访问web
内容。web
上的一些内容不想被其他人知道,但是又想让部分人看到。nginx
的http auth
模块以及Apache http auth
都是很好的解决方案。
这里以军哥的LNMP
为例,默认情况下nginx
已经安装了ngx_http_auth_basic_module
模块。
Nginx认证配置实例
1、生成认证文件
# printf "test:$(openssl passwd -crypt 123456)\n" >>/home/htpasswd
# cat /home/htpasswd
test:xyJkVhXGAZ8tM
注意:这里账号:test
,密码:123456
,记住认证文件路径
2、配置网站conf文件
server{
listen 80;
server_name www.moerats.com moerats.com;
index index.html index.php;
root /home/wwwroot/www.moerats.com;
location /
{
auth_basic "Please enter your username and password";
auth_basic_user_file /home/htpasswd;
autoindex on;
}
}
注意:一定要注意auth_basic_user_file
路径,否则会不厌其烦的出现403。
3、重启Nginx
/etc/init.d/nginx restart
LNMP下为Nginx目录设置访问验证的用户名密码
有时候需要象Apache
那样为指定的目录添加访问验证,一般在Apache
下使用htpasswd
来添加,而htpasswd
是包含在apache2-utils
里,一般LNMP
一键安装包或自己编译安装LNMP
都不会安装apache2-utils
。
1、创建类htpasswd文件
执行下面命令:
wget -c https://www.moerats.com/usr/down/htpasswd.sh;bash htpasswd.sh
按提示输入用户名、密码、及认证文件名。脚本会自动生成认证文件。记录下脚本返回的文件路径。如:/usr/local/nginx/conf/vpser.net.auth
。
2、为Nginx添加auth认证配置
下面是以某域名下面的soft
目录为例,在域名的server
段里加上如下代码:
location ^~ /soft/
{
auth_basic "Authorized users only";
auth_basic_user_file 这里写前面脚本返回的文件路径;
}
Authorized users only
为提示信息,可以修改成自己想让他提示的信息;auth_basic_user_file
后面需要填htpasswd.sh
脚本返回的人家文件的路径。按上面的提示修改好配置后,重启nginx
,访问http://yourdomainname/soft/
就会提示输入用户名和密码。
注意:加上认证之后该目录下的PHP
将不会被解析,会出现下载提示,如果想可以解析PHP
可以将上面的配置改为:
location ^~ /soft/ {
location ~ .*\.(php|php5)?$ {
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
auth_basic "Authorized users only";
auth_basic_user_file 这里写前面脚本返回的文件路径;
}
本教程适合LNMP一键安装包或自己安装的LNMP
,只不过目录和配置文件可能位置不一样。
设置完执行:/usr/local/nginx/sbin/nginx -t
测试配置是否有错误。
再执行:/usr/local/nginx/sbin/nginx -s reload
载入配置文件。
部分参考:https://www.vpser.net/build/nginx-htpasswd.html
版权声明:本文为原创文章,版权归 Rat's Blog 所有,转载请注明出处!
本文链接:https://www.moerats.com/archives/171/
如教程需要更新,或者相关链接出现404,可以在文章下面评论留言。
大佬,有来麻烦你了,这个我配置网站conf文件,重启后,还是没有密码,请问怎么回事?
宝塔面板还是?一般是没啥问题的,检查下路径,密码文件啥的
大佬,我好像找到原因了,我安装的nginx是1.10.2版本的。。。。没有ngx_http_auth_basic_module模块。。。
那应该就是这个问题了
不是宝塔,server_name www.moerats.com moerats.com; 这儿的两个域名?
用DirectoryLister的,挂载完毕对网页设置访问验证的用户名密码成功。但是对文件夹设置访问验证的用户名密码一直失败。DirectoryLister的访问目录总是x.x..x/?dir= ,location 会忽略?以后的东西造成捕获不到。如何处理啊
https://www.moerats.com/archives/547/,用这个版本,固定了url,