标签归档:php

用nginx的auth_basic模块保护wordpress后台

查看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;
}

以上为通用设置,加入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;
}

搞定后重启nginx,访问后台看下效果~要求认证了,输入用户名密码,成功进行后台,OK!
看下log情况怎么样
nginx log
嗅探访问全部被返回401了~
Done~

费了九牛二虎之力,总算在本地用配置ubuntu server 9.10+nginx+mysql+php服务器成功了.

Sun VirtualBox自己亲身实践才知道配置服务器可真是一件极度消耗脑力的事…那些个命令,代码可真是搞得我快崩溃了,期间好多次都进行不下去了,又上论坛寻找帮助,再弄!

功夫不负有心人,我总算是弄成功了!虽然弄得很疲惫,但看到成功的成果,心里还是很高兴的.这个搞成功了,证明以后如果让我配置一台远在美国的服务器(VPS)我也能行了!

说一下我的配置环境

主机系统 WINXP

虚拟机软件 Sun VirtualBox

虚拟机系统 Ubuntu server 9.10 32bit

服务器解译引擎 nginx/0.7.62

PHP版本 5.2.10

MYSQL版本 5.1.37

打开虚拟机之后,全程使用PUTTY模拟远程登陆配置服务器!通过这次配置,学到挺多的.现在我有把握买了一台VPS之后独立完成服务器的配置了.

发几张配置成功的图

测试wordpress 

继续阅读