可爱熊个人博客

Category : 技术杂文

Nginx 限制单个IP的并发连接数及对每个连接速度

使用Nginx限制单个IP的并发连接数能够减少一些采集程序或者DDOS的攻击。
lnmp的nginx配置中已经添加了部分代码,但是是注释掉的,可以编辑/usr/local/nginx/conf/nginx.conf 文件

1.1.8以上版本的nginx的设置:
查找:

代码:

#limit_conn_zone $binary_remote_addr zone=perip:10m;

,将前面的#去掉,没这一行的,话加上

代码:

limit_conn_zone $binary_remote_addr zone=perip:10m;

再在要设置限制连接数的虚拟主机配置里的server段里添加上

代码:

limit_conn perip 10;

10就是单个IP的最大并发连接数。

代码:

limit_rate 100k;

limit_rate为限速为 100KB/秒。
限制每个连接速度为100K,此限制是针对单个线程,比如,我用IE下载是100K,当用迅雷时它会占用2个线程,所以迅雷下载速度为200K,如果单个IP的并发数设置为10,则多线程下载的话速度可以达到100K×10。

最后/usr/local/nginx/sbin/nginx -t 测试配置是否有错误,如没有错误执行:
/usr/local/nginx/sbin/nginx -s reload 重载配置使其生效

Read More…

安装完LNMP后,直接访问IP显示403 Forbidden

安装完成后域名/home/wwwroot/下面没有index文件,所以直接访问IP会显示403 Forbidden。
也有可能是权限问题,执行chown www:www -R 目录或文件。

LNMP安装软件,安装目录位置。

LNMP一键安装包除去安装所必须的依赖包,还会默认安装以下软件: Nginx、MySQL/MariaDB、PHP、phpMyAdmin、Zend Optimizer/Zend GuardLoader。用户可以根据自己的需要安装其他组件,如FTP服务器、缓存组件,也可以使用升级脚本对Nginx、MySQL、PHP进行升级。
安装这些组件或升级都需要在lnmp下载解压缩后的目录,比如下载到/root目录,就进入/root/lnmp1.2-full目录,执行以下命令。

虚拟主机管理:

    参见:

http://lnmp.org/faq/lnmp-vhost-add-howto.htmlFTP服务器:

  • 可选1,PureFTPd,执行:./pureftpd.sh 安装,http://yourIP/ftp/ 进行管理。
  • 可选2(LNMP1.2下已经移除该脚本),Proftpd,执行:./proftpd.sh 安装,执行命令:/root/proftpd_vhost.sh 添加FTP账号。

缓存加速:

    LNMP1.2及更高版本统一使用./addons.sh 进行安装和卸载。 使用方法:./addons.sh {install|uninstall} {eaccelerator|xcache|memcached|opcache|redis|imagemagick|ioncube} 详细教程:

http://lnmp.org/faq/addons.html

    LNMP1.1下:

  • 可选1,eAccelerator,执行:./eaccelerator.sh 安装。
  • 可选2,memcached,执行:./memcached.sh安装。
  • 可选3,xcache,安装时需选择版本和设置密码, http://yourIP/xcache/ 进行管理,用户名 admin,密码为安装xcache时设置的。执行:./xcache.sh安装。
  • 可选4,redis,执行:./redis.sh安装。
  • 可选5,opcache,执行:opcache.sh安装。http://yourIP/ocp.php 进行管理。Zend Opcache与eaccelerator相冲突,需卸载eaccelerator。

Read More…

Win7不能访问XP共享文件的解决方法

Win7不能访问XP共享文件  与  XP不能访问Win7共享文件  所需的一些基本条件都是相同的,比如Win7和XP必须在同一IP地址段、必须为同一工作组,等等!任何一个错误的设置都有可能导致Win7和XP不能互相访问!所以大家在共享设置里,必须保证上述的一些基本设置都是准确无误的! 这些基本条件的设置在这里就不多说,直接看下面的故障分析!   顺便说一下,网上说的关闭防火墙和开启guest账户的方法,都是胡诌的,没什么用途

故障一:在Win7的网上邻居中,可以看见XP,但是双击打不开

提示:您没有权限访问。请与网络管理员联系请求访问权限

解决方法:复制下面的代码到记事本中,注意一定要复制成一行!然后另存,文件类型选择“所有文件”,名字为123.bat

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa /v restrictanonymous /t reg_dword /d 0 /f

在XP上运行这段代码,运行后必须重启XP,之后Win7就可以访问XP了!

Read More…

win10输入法调整

最近用上了win10系统,其他方面比起老系统来都有了很大的进步,就是输入法的切换和样式很不习惯,后来终于找到方法改变回熟悉的win7系统输入法的方式。特记录下来,以防以后忘记查询使用!

 

Win10输入法修改成Win7样式
“控制面板”-“语言”-“高级设置”-“替代默认输入法”-“英语(美国)美式键盘”-”保存“

Win10输入法切换更改为“Ctrl+Shift”
“控制面板”-“语言”-“高级设置”-“更改语言栏热键”-“高级键设置”-“在输入语言之间”-“更改按键设置”-“切换输入语言”-“Ctrl+Shift”-“确定”-“保存”

杰奇所有调用标签代码

标签是这样用的
把以下的标签代码复制进去,这样就可以用在想用的地方了
比如你要在模板某处添加文章的序号 你就这样
{?$articlerows.articleid?}

 

杰奇小说模块标签大全block_transarticles.php
功能说明:转载文章列表(动态)
模板文件:/templates/blocks/block_transarticles.html
模板标签:
articlerows.articleid                                   – 文章序号
articlerows.articlename                                 – 文章名

 

block_uarticles.php
功能说明:我的文章列表(原创,动态)
模板文件:/templates/blocks/block_uarticles.html
模板标签:
articlerows.articleid                           – 文章序号
articlerows.articlename                         – 文章名称
articlerows.url_articleinfo                     – 文章名称的url
articlerows.type                                – 文章类型
articlerows.intro                               – 文章内容简介
articlerows.postdate                            – 文章的创建时间(日期)
articlerows.posttime                            – 文章的创建时间(秒数)
articlerows.update                              – 文章的最后修改时间(日期)
articlerows.uptime                              – 文章的最后修改时间(秒数)
articlerows.visitnum                            – 文章的访问量
articlerows.htmlurl                             – 文章静态页面的url
articlerows.url_index                           – 文章静态页面的url
articlerows.url_image                           – 文章封面图片的url
articlerows.lastchapterid                       – 章节序号
articlerows.lastchapter                         – 章节名称
articlerows.url_lastchapter                     – 章节的url
articlerows.lastvolume                          – 分卷序号
articlerows.lastvolume                          – 分卷名称
articlerows.url_articleindex                    – “最新章节”的url
articlerows.authorid                            – 作者序号
articlerows.author                              – 作者
articlerows.posterid                            – 发表者序号
articlerows.poster                              – 发表者
articlerows.agentid                             – 代理者序号
articlerows.agent                               – 代理者
articlerows.sortid                              – 类别序号
articlerows.sort                                – 类别
articlerows.size_k                              – 文章字节数
articlerows.dayvisit                            – 文章当天访问量
articlerows.weekvisit                           – 文章本星期访问量
articlerows.monthvisit                          – 文章本月访问量
articlerows.allvisit                            – 文章所有访问量
articlerows.dayvote                             – 文章当天票数
articlerows.weekvote                            – 文章本星期票数
articlerows.monthvote                           – 文章本月票数
articlerows.allvote                             – 文章所有票数
articlerows.lastupdate                          – 最后更新日期
articlerows.fullflag                            – 文章状态

Read More…

移动端打开网页自动跳转到wap页面

移动端打开网页自动跳转到wap页面。

apache办法:

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_USER_AGENT} (android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge\ |maemo|midp|mmp|mobile.+firefox|netfront|opera\ m(ob|in)i|palm(\ os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows\ ce|xda|xiino [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a\ wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r\ |s\ )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1\ u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp(\ i|ip)|hs\-c|ht(c(\-|\ |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac(\ |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt(\ |\/)|klon|kpt\ |kwc\-|kyo(c|k)|le(no|xi)|lg(\ g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-|\ |o|v)|zz)|mt(50|p1|v\ )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v\ )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-|\ )|webc|whit|wi(g\ |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-) [NC]
RewriteRule ^$ http://m.woduba.com [R,L]

Read More…

Object C NSLog 格式化输出数据

1 . 几种常用类型变量声明

int i =10;

BOOL isShow=YES;

BOOL isShow=1;

float f = 3.1415926;

char a =120;

NSString *name =@“Himi”;

object-c中BOOL类型长度1byte, 若将short或int型数赋值给BOOL类型则截取低位1个字节.

object-c  中字符串类型的声明和java,C# 有点不一样,string 在面向对象语言中是一个引用类型,在object-c中是使用指针。

Read More…

Objective-C 之同步请求、异步请求、GET请求、POST请求

1、同步请求可以从因特网请求数据,一旦发送同步请求,程序将停止用户交互,直至服务器返回数据完成,才可以进行下一步操作,
2、异步请求不会阻塞主线程,而会建立一个新的线程来操作,用户发出异步请求后,依然可以对UI进行操作,程序可以继续运行
3、GET请求,将参数直接写在访问路径上。操作简单,不过容易被外界看到,安全性不高,地址最多255字节;
4、POST请求,将参数放到body里面。POST请求操作相对复杂,需要将参数和地址分开,不过安全性高,参数放在body里面,不易被捕获。

1、 同步GET请求

 //第一步,创建URL
    NSURL *url = [NSURL URLWithString:@"http://www.shiniv.com/test.php?type=get"];
     
    //第二步,通过URL创建网络请求
    NSURLRequest *request = [[NSURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];
    //NSURLRequest初始化方法第一个参数:请求访问路径,第二个参数:缓存协议,第三个参数:网络请求超时时间(秒)
      其中缓存协议是个枚举类型包含:
      NSURLRequestUseProtocolCachePolicy(基础策略)
      NSURLRequestReloadIgnoringLocalCacheData(忽略本地缓存)
      NSURLRequestReturnCacheDataElseLoad(首先使用缓存,如果没有本地缓存,才从原地址下载)
      NSURLRequestReturnCacheDataDontLoad(使用本地缓存,从不下载,如果本地没有缓存,则请求失败,此策略多用于离线操作)
      NSURLRequestReloadIgnoringLocalAndRemoteCacheData(无视任何缓存策略,无论是本地的还是远程的,总是从原地址重新下载)
      NSURLRequestReloadRevalidatingCacheData(如果本地缓存是有效的则不下载,其他任何情况都从原地址重新下载)
    //第三步,连接服务器
    NSData *received = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
     
    NSString *str = [[NSString alloc]initWithData:received encoding:NSUTF8StringEncoding];
     
    NSLog(@"%@",str);

Read More…

Objective-C和PHP进行json交互

由于ASIHttpRequest的作者已经明确不再维护这个库了,所以我使用了较为轻量的MKNetworkKit库。

服务端,PHP自带了json的序列化和反序列化函数:json_encode和json_decode。而对于客户端,我采用了TouchJSON这个开源库。

BTW,GitHub已经是新一代的、主流的开源文化和产业了,上面提到的开源库,都来自GitHub。 :)

首先,客户端利用MKNetworkKit库向服务端发个请求:

MKNetworkOperation *op = [self operationWithPath:path params:(NSMutableDictionary *)params httpMethod:@"POST"];

服务端收到请求后,构造返回参数,然后回馈给客户端:

$arr = array();
$arr['code'] = 200;
$arr['msg'] = '你好,中文';

$jsonData = json_encode($arr);
echo $jsonData;

Read More…