完美的利用Nginx的auth_basic模块密码保护WordPress后台目录

全屏阅读
  • 基本信息
  • 作者:
  • 作者已发布:920篇文章
  • 发布时间:2022年09月27日 18:36:44
  • 所属分类:Linux, Nginx
  • 阅读次数:424次阅读
  • 标签:

nginx目录访问密码保护 有时候需求这样:某个域名,或域名下的某个目录,需要访问时输入指定的用户名和密码。nginx同样可以做到,而且一点不比apache差。

第一步:生成htpasswd文件

htpasswd是Apache密码生成工具,Nginx支持auth_basic认证,因此我们也可以将生成的密码用于Nginx中,输入一行命令即可安装:

apt install httpd-tools

参数如下:

-c 创建passwdfile.如果passwdfile 已经存在,那么它会重新写入并删去原有内容.
-n 不更新passwordfile,直接显示密码
-m 使用MD5加密(默认)
-d 使用CRYPT加密(默认)
-p 使用普通文本格式的密码
-s 使用SHA加密
-b 命令行中一并输入用户名和密码而不是根据提示输入密码,可以看见明文,不需要交互
-D 删除指定的用户

htpasswd -bsc /etc/nginx/.htpasswd hxs 123456

第二步:在nginx的配置文件nginx.conf中添加

location ^~ /wp-admin/ {
auth_basic "Restricted Access";
auth_basic_user_file /home/user/domains/.htpasswd;
}

需要注意的是如果不用^~ /wp-admin/
而用 /wp-admin/的话,那么将只能对目录进行验证 直接访问其下的文件 将不会弹出登录验证

第三步:发现新的问题

但是,然后你会发现,直接访问里面的 php 文件会变成下载而不是运行——超囧~

度娘上有提到解决方法—gzip需要关闭,因为会把动态文件解析成静态

我是这样解决的:在刚才的 location ^~ /ooxx/{ … } 里面加多一段对 php 的配置,变成

location ^~ /wp/wp-admin/ {
auth_basic "Authorized users only";
auth_basic_user_file /etc/nginx/.htpasswd;

location ~ \.php$ {
include snippets/fastcgi-php.conf;
#
# # With php-fpm (or other unix sockets):
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
# # With php-cgi (or other tcp sockets):
# fastcgi_pass 127.0.0.1:9000;
}
}

上述是nginx-php7.4的配置,nginx-php7.0的配置如下

location ^~ /wp-admin/ {
auth_basic "Restricted Access Area";
auth_basic_user_file /home/user/domains/.htpasswd;

location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
}

location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}

顶一下
(0)
100%
订阅 回复
踩一下
(0)
100%
» 郑重声明:本文由mpxq168发布,所有内容仅代表个人观点。版权归恒富网mpxq168共有,欢迎转载, 但未经作者同意必须保留此段声明,并给出文章连接,否则保留追究法律责任的权利! 如果本文侵犯了您的权益,请留言。

目前有 0 条留言 其中:访客:0 条, 博主:0 条

给我留言

您必须 [ 登录 ] 才能发表留言!