查看nginx的log,有很多针对wp-login.php wp-admin的嗅探访问,网上想干坏事的人真是无处不在,还是把后台保护起来吧,断了那些坏银的念想。
google了一下,保护分两种,一种通过php实现,适合使用虚拟主机的用户,另一种通过nginx的auth_basic模块对后台进行密码保护。
两种办法都能起来保护后台的作用,相对来讲,肯定是后一种的性能更好一点,nginx的负载能力特NB的。前一种更方便,但经过PHP处理性能会相对差一点。
我因为用VPS,所以选择第二种,下面两种办法都说一下。
PHP办法:
修改当前主题的functions.php文件
//保护后台登录 add_action('login_enqueue_scripts','login_protection'); function login_protection(){ if($_GET['word'] != 'press')header('Location: https://yourdomain/'); } |
加入以上代码之后,你的后台登陆地址就变成https://yourdomain/wp-login.php?word=press,可以把以上代码的word和press改为你喜欢的任意字符,比如
if($_GET['坏人'] != '滚开')header('Location: https://yourdomain/'); |
,那么你的后台登陆地址就变成 https://yourdomain/wp-login.php?坏人=滚开,直接访问https://yourdomain/wp-login.php将被重定向的https://yourdomain/(你的首页)。
这个办法有一个缺点,你每次更改主题或升级主题都要重新修改一遍。
nginx办法:
先生成加密的密码文件,可以到这里生成,加密方式选crypt,输入你想要的用户名和密码,点生成,把结果输出到 /usr/local/nginx/conf/passwd (你也可以自定义路径,改后auth_basic_user_file的路径要相应改变)。
或者直接用openssl生成,输入如下命令
echo "user:`openssl passwd -crypt yourpasswd`" > /usr/local/nginx/conf/passwd |
在server里加入如下设置
location ~ /wp-login\.php { location ~ .*\.(php|php5)?$ { fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_index index.php; include fascgi.conf; } auth_basic "Restricted"; auth_basic_user_file passwd; } |
2016
以上为通用设置,加入php解析项,要不会直接下载wp-login.php
我的服务器环境为军哥的LNMP1.4,在server项的 include enable-php.conf; 后加入如下设置就可以了
location = /wp-login.php { auth_basic "Restricted"; auth_basic_user_file passwd; fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_index wp-login.php; include fastcgi.conf;20 } |
搞定后重启nginx,访问后台看下效果~要求认证了,输入用户名密码,成功进行后台,OK!
看下log情况怎么样
嗅探访问全部被返回401了~
Done~