ngx_http_auth_basic_module 模块可以实现访问者输入正确用户名和密码才允许访问指定目录内容。比如,可以实现 VPS 上放置的探针,只能输入用户名和密码后才能访问。
这样就不需要用下面的笨办法来阻止访客访问探针文件。
生成用户认证文件
echo "username:$(openssl passwd -crypt 'password')" >> /home/.htpasswd
其中,username 为用户名,password 为密码,/home/.htpasswd 为用户认证文件路径。
注意:密码长度最大为8位。
修改 Nginx 配置文件
location ^~ /test/ {
location ~ [^/]\.php(/|$)
{
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
auth_basic "Authorized users only";
auth_basic_user_file /home/.htpasswd;
}
以上为参考配置,请根据实际修改。
修改完配置,reload 一下 Nginx:
nginx -s reload
如无意外,就成功了。
LNMP 环境下测试通过。
参考资料
小十 - nginx用户认证配置( Basic HTTP authentication)
Zohar - Nginx启用HTTP Basic Auth
Comments:4
这样做可能会让加密码的文章输密码后不能正常显示
那个POST包是到/wp-login.php的
@hardrain WordPress 修改管理页面登录地址—你说的是这个?双重密码,不能访问很正常吧?
@老头 我说的完全不是一回事
我的意思是,如果有文章设了密码,wordpress会向/wp-login.php发一个请求来验证密码。
而如果你对/wp-login.php设置了HTTP Auth,会导致访客输入密码时看到登陆窗口
@hardrain 懂了,不过我只是用来保护探针而已。