标签归档:nginx

用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~

web日志之nginx限制连接数&限速

好记性不如烂笔头,学到的东西还是写下来记得牢,忘记了也好再查找.
今天学到如何在nginx中限制单一IP的连接数和连接速度,这个在攻击和防迅雷还是挺有用的,记下!

限速使用 limit_zone, limit_conn 以及 limit_rate 进行配置
首先在 http 段配置一个 limit_zone,
然后在需要的地方使用 limit_conn 和 limit_rate 进行限速设置,
如下一个简单的例子:
对/files/ 目录,设置同一IP允许最多2个并发连接,每个连接限速20K(160kbps)

  1. http {   
  2. limit_zone one $binary_remote_addr 10m;   
  3. server {   
  4. location /files/ {   
  5. limit_conn one 2;   
  6. limit_rate 20k;   
  7. }   
  8. }   
  9. }   

说明: 继续阅读

费了九牛二虎之力,总算在本地用配置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 

继续阅读