Loading
0

nginx通过auth_basic模块实现访问验证(输入用户和密码)

技术小学生微信公众号
腾讯云服务器大促销。
华为服务器
前言:最近准备做一个软件分享站,只提供自己使用,不对外,通过宝塔搭建好了站点,但任何人都可以访问,我的需求是访问网站时输入用户名和密码,验证通过后才能正常显示页面,错误则提示没权限。一番折腾最终用nginx的auth_basic模块实现了访问控制。非常简单,一方面防止自己忘记,另一方面也方便需要的网友。
需求:访问网站需要输入正确的用户名和密码才能显示。
在nginx站点配置文件中添加如下规则:

    auth_basic   "blog.tag.gg";
    auth_basic_user_file /www/wwwroot/.htpasswd;

添加后如图:

server
{
    listen 80;
    listen 443 ssl http2 ;
    server_name soft.tag.gg;
    index index.php index.html index.htm default.php default.htm default.html;
    root /www/test/www.tag.gg;
    #CERT-APPLY-CHECK--START
    # 用于SSL证书申请时的文件验证相关配置 -- 请勿删除
    include /www/server/panel/vhost/nginx/well-known/soft.tag.gg.conf;
    #CERT-APPLY-CHECK--END
    auth_basic   "yanzheng";
    auth_basic_user_file /www/test/test/.htpasswd;

    #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
    #error_page 404/404.html;
后面略
...................

注意:如果您的站点权限是www,则.htpasswd文件对应的目录也需要www权限,不然会报500错误。
执行如下命令生成用户名和密码并添加到.htpasswd文件

echo "user:`openssl passwd 'passwd'`" >>  /www/test/test/.htpasswd

例如我们要设置一个abc用户,密码为:syuifsfs8890 则执行如下命令:

echo "abc:`openssl passwd 'syuifsfs8890'`" >>  /www/test/test/.htpasswd

配置正确后重载nginx服务,然后访问则会弹出窗口提示输入用户名和密码进行验证。
如图。


题外话:
如果需要用wget或者curl命令下载这里面的文件怎么办呢。
直接下载会提示没权限,我们需要给wget或curl命令传入用户名和密码即可。范例可参考如下:
Wget:

wget --auth-no-challenge --user=abc --password=woshimima https://soft.tag.gg/test.zip

Curl:

curl -u woshiyonghuming:woshimima -O https://soft.tag.gg/test.zip



 
技术小学生微信公众号
华为服务器
腾讯云服务器大促销。

声明:站长码字很辛苦啊,转载时请保留本声明及附带文章链接:https://blog.tag.gg/showinfo-7-36345-0.html
亲爱的:若该文章解决了您的问题,可否收藏+评论+分享呢?
上一篇:Nginx如何监听IPV6地址方法
下一篇:返回列表