Nginx实现目录密码保护

web目录的管理目录一般都不希望除了管理员之外的人访问吗,当然php内置的用户验证安全性非常重要,如果在web服务器上加入目录访问验证的话,效果当然更好。目前我用的是Nginx,需要如下开启目录访问密码验证:

location /secret {
   auth_basic            "Restricted";
   auth_basic_user_file  /etc/htpasswd;
 }

这样设置的话,如果用户访问secret目录的话,首先要接受Nginx本身内置的密码验证系统(保存在/etc/htpasswd文件中)。但是如何创建这个密码验证文件?如果安装了Apache的话,apache内置有生成htpasswd的工具,nginx的话只有利用shell的内置工具:

printf "user:$(openssl passwd -crypt yourdomian)\n" >> /etc/htpasswd

上面的命令就能创建一个用户名为user,密码为yourdomian的用户。

但是如果被保护的web目录中包含有php文件的话,直接访问php的话就不需要输入密码了,需要把Nginx的conf文件改一下:

location /secret {
   auth_basic            "Restricted";
   auth_basic_user_file  /etc/htpasswd;
   location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        include        fastcgi.conf;
    }
}

把php的解析复制一段,放在对secret目录里面,再访问这个目录里面的php文件的话就需要输入密码了。

Leave a Reply

Your email address will not be published. Required fields are marked *