最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
nginx中目录加密与添加用户认证配置
时间:2022-06-30 18:40:56 编辑:袖梨 来源:一聚教程网
有时候为了安全,我们不希望暴漏我们网站的后台地址,所以一般我们都把后台的地址隐藏。比如说一些开源的cms,如果是通过http://www.你的域名/admin.php?m=admin这样访问的话,我们一般把admin.php改成别的不容易被猜测的文件名,但是对于一些cms,则不能这样改,因为有很多地方用到了这个写死的路径,比如wordpress,后台访问的路径一般都是http://www.你的域名/wp-admin/或者http://www.你的域名/wp-login.php,wp-admin和wp-login.php又不方便改,改了就得改原程序文件,这样不方便升级,而且也不知道要改多少。
所以,这个时候我们就希望可以在访问我们的后台的时候,要先输入用户名和密码,通过了认证才进入到后台地址。下面,我们来以nginx为例,说一下如何给某个目录添加用户名和密码的认证,通过用户名密码认证访问特定web站点目录,给后台目录加密。
我们是通过nginx的 auth_basic 来实现的。所以我们需要在nginx的虚拟主机配置文件里面设置,对于使用虚拟主机的朋友,就没有办法了。拿wordpress为例说明,wordpress的后台地址是 http://www.你的域名/wp-admin/,还有登录页面 http://www.你的域名/wp-login.php ,所以我们要对admin的文件目录加密,还是有wp-login.php路径加密。
【1】设置密码文件。
首先我们需要设置一个密码文件,密码是要经过htpasswd来生成,我们来个简单的,直接使用php来生成密码。新建一个php文件,输入代码
//将代码中的两个 123 替换成您的访问密码
代码如下 | 复制代码 |
echo crypt('123', base64_encode('123')); //得到 MTTuFPm3y4m2o |
我们得到 一个字符串 MTTuFPm3y4m2o,这个字符串就是123加密之后的密钥。
【2】在服务器上面的/home/mypwd/目录下新建一个文件 pass 的文件,用户名是 test,密码是123
代码如下 | 复制代码 |
cd /home/mypwd/ vi pass |
[/php]
在打开的文件里面输入
代码如下 | 复制代码 |
test:MTTuFPm3y4m2o |
test就是用户名,然后就是一个冒号:,然后就到123加密得到的密钥
然后退出并保存文件
:wq
这样我们就定义了存用户名和密码的文件
【3】在nginx的虚拟主机配置文件里面设置
打开您的站点的配置文件 ,一般路径是安装路径下面的 conf/vhost/目录下。
打开配置文件,
vi test.你的域名
里面已经有了配置的信息了,在里面加上一下配置
代码如下 | 复制代码 |
location /admin/{ auth_basic 'hello,zhoumanhe!'; auth_basic_user_file /home/mypwd/pass; } location /wp-login.php { auth_basic 'Hi,zhou manhe.welcome back!'; auth_basic_user_file /home/mypwd/pass; } |
说明一下,auth_basic后面的是提示信息,auth_basic_user_file后面的就是你的那个存放用户名和密码的文件的路径
然后保存,重启一下nginx,如果重启提示有错,可能是配置文件哪里写过了,回去检查一下。如果ok,就测试一下吧!出现这个说明成功了一半。为什么说成功了一半?!!
【4】处理意外情况
输入用户名和密码试试,进入到后台的登录地址了没有?有一些朋友可能会遇到500的错误,我就一直纠结与这个好久。。。如果配置文件有错,重启的时候会报错的啊,网上查了一下说500有可能是配置文件的重写规则有错,检查了,没错。。。后面我查看了nginx的日志文件,报错是
15868#0: *5606 open() “/home/mypwd/pass” failed (13: Permission denied)…..;
又百度了一下,是这个读取这个文件的权限不够,在linux命令行下面查看了一下nginx的进程
代码如下 | 复制代码 |
ps -aux | grep nginx |
发现nginx的master进程是root的用户,但是worker process进程是nobody用户的,而我的nginx是root用户的,默认是用worker进程读文件,虽然我赋予了777权限也还是不行(不懂为什么),所以要吧worker进程改成root的,这样就访问得了了。
打开nginx的配置文件,nginx安装目录的conf/nginx.conf文件,找到#user nobody,或者也有可能是是user nobody,改成user root; 即可。重启nginx试一下,是不是成功了呢
案例
正常的:pass.你的域名,要加密的路径 pass.你的域名/admin,用户名:zhou,密码:123
相关文章
- 《绝区零》伊芙琳培养材料汇总 01-24
- 《无限暖暖》1.2春节兑换码一览 01-24
- 《网上国网》查询阶梯档位方法 01-24
- 《蛋仔派对》神游贺岁盲盒获取方法 01-24
- 《炉石传说》星际联动盗贼卡组玩法介绍 01-24
- 皮革珊瑚属于珊瑚中的 01-24