艺塔科技
Artbeta.Com
PHP博客 | 首页 | 发新随笔 | 发新文章 | 联系 | 聚合 | 管理

2012年7月10日

iis分号漏洞导致1.php;2.jpg以php脚本执行
在Windows中要搜索多个文件是使用分号(;)进行分割的,如果这个文件本身带有分号怎么?- -。哈哈系统就不能搜索这种文件的!下图,明明有这个h.php;kk.jpg这个文件,在Windows搜索中会被当成h.php和kk.jpg这两个 文件来搜索,这是Windows的一个设计不当,应该说不应该让分号(;)做文件名的!

iis规则添加:
RewriteRule (.*).php/(.*) /block.gif [I]
RewriteRule (.*)\.(.{3});(.*) /block.gif [I]
posted @ 2012-07-10 13:44 泪雪无恨 阅读(408) | 评论 (0) | 编辑 收藏
 
【待测试】nginx多核cpu的优化方法
Nginx默认没有开启利用多核CPU,我们可以通过增加worker_cpu_affinity配置参数来充分利用多核CPU。CPU是任务处理,计算最关键的资源,CPU核越多,性能就越好。

配置Nginx多核CPU,worker_cpu_affinity使用方法和范例

2核CPU,开启2个进程
worker_processes 2;
worker_cpu_affinity 01 10;


01表示启用第一个CPU内核,10表示启用第二个CPU内核
worker_cpu_affinity 01 10;表示开启两个进程,第一个进程对应着第一个CPU内核,第二个进程对应着第二个CPU内核。

2核CPU,开启4个进程
worker_processes 4;
worker_cpu_affinity 01 10 01 10;



开启了四个进程,它们分别对应着开启2个CPU内核

4核CPU,开户4个进程
worker_processes 4;
worker_cpu_affinity 0001 0010 0100 1000;



0001表示启用第一个CPU内核,0010表示启用第二个CPU内核,依此类推

4核CPU,开启2个进程
worker_processes 2;
worker_cpu_affinity 0101 1010;



0101表示开启第一个和第三个内核,1010表示开启第二个和第四个内核,2个进程对应着四个内核

worker_cpu_affinity配置是写在/etc/nginx/nginx.conf里面的。

2核是 01,四核是0001,8核是00000001,有多少个核,就有几位数,1表示该内核开启,0表示该内核关闭。

8核CPU,开户8个进程
worker_processes 8;
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;


0001表示启用第一个CPU内核,0010表示启用第二个CPU内核,依此类推

worker_processes最多开启8个,8个以上性能提升不会再提升了,而且稳定性变得更低,所以8个进程够用了。

配置完毕后,重启nginx ,执行
1        /etc/init.d/nginx restart

测试nginx是否有用到多个CPU内核 ,在另一台机器上执行ab.exe -c 1000 -n 1000 http://www.domain.com/index.php

ab.exe是装apache后带的一个性能测试工具,它可以模拟多客户端的并发请求。

在服务器上执行top,然后按1,就可以看到CPU内核的工作情况。如果多个CPU内核的利用率都相差不多,证明nginx己经成功的利用了多核CPU。

测试结束后,CPU内核的负载应该都同时降低。
posted @ 2012-07-10 13:43 泪雪无恨 阅读(675) | 评论 (0) | 编辑 收藏
 
nginx的location语法说明
一、介绍Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”, 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器.
二、Location语法语法:location [=|~|~*|^~] /uri/ { … }
注:
1、~   为区分大小写匹配
2、~* 为不区分大小写匹配
3、!~和!~*分别为区分大小写不匹配及不区分大小写不匹配
示例一:
location  / { }
匹配任何查询,因为所有请求都以 / 开头。但是正则表达式规则将被优先和查询匹配。
示例二:
location =/ {}
仅仅匹配/
示例三:
location ~* \.(gif|jpg|jpeg)$ {
rewrite \.(gif|jpg)$ /logo.png;
}
注:不区分大小写匹配任何以gif,jpg,jpeg结尾的文件
三、ReWrite语法
last - 基本上都用这个Flag。
break - 中止Rewirte,不在继续匹配
redirect - 返回临时重定向的HTTP状态302
permanent - 返回永久重定向的HTTP状态301
1、下面是可以用来判断的表达式:
-f和!-f用来判断是否存在文件
-d和!-d用来判断是否存在目录
-e和!-e用来判断是否存在文件或目录
-x和!-x用来判断文件是否可执行
2、下面是可以用作判断的全局变量
例:http://localhost:88/test1/test2/test.php
$host:localhost
$server_port:88
$request_uri:http://localhost:88/test1/test2/test.php
$document_uri:/test1/test2/test.php
$document_root:D:\nginx/html
$request_filename:D:\nginx/html/test1/test2/test.php
四、Redirect语法
    server {
    listen 80;
    server_name start.igrow.cn;
    index index.html index.php;
    root html;
    if ($http_host !~ "^www\.itlearner\.com$ {
         rewrite ^(.*) http://www.itlearner.com$1 redirect;
    }
    }
五、防盗链location ~* \.(gif|jpg|swf)$ {
  valid_referers none blocked start.igrow.cn sta.igrow.cn;
  if ($invalid_referer) {
  rewrite ^/ http://$host/logo.png;
  }
}
六、根据文件类型设置过期时间
location ~* \.(js|css|jpg|jpeg|gif|png|swf)$ {
if (-f $request_filename) {
   expires    1h;
   break;
}
}
七、禁止访问某个目录
location ~* \.(txt|doc)${
      root /data/www/wwwroot/linuxtone/test;
    deny all;
}


++ 一些可用的全局变量
$args
$content_length
$content_type
$document_root
$document_uri
$host
$http_user_agent
$http_cookie
$limit_rate
$request_body_file
$request_method
$remote_addr
$remote_port
$remote_user
$request_filename
$request_uri
$query_string
$scheme
$server_protocol
$server_addr
$server_name
$server_port
$uri
posted @ 2012-07-10 13:42 泪雪无恨 阅读(136) | 评论 (0) | 编辑 收藏
 
nginx防盗链配置
1、nginx针对文件类型的防盗链配置方法:
location ~* \.(gif|jpg|png|swf|flv|bmp)$ {

  valid_referers none blocked *.artbeta.com artbeta.com;

  if ($invalid_referer) {

  #rewrite ^/ http://bbs.artbeta.com/403.html;

  return 403;

  }

  }

          这种方法是在server或者location段中加入:valid_referers none blocked,其中none表示空的来路,也就是直接访问,比如直接在浏览器打开一个文件,blocked表示被防火墙标记过的来 路,*.artbeta.com表示所有子域名。
  


2、nginx针对文件目录的防盗链配置方法:

location /img/ {

  root /data/img/;

  valid_referers none blocked *.artbeta.com artbeta.com;

  if ($invalid_referer) {

  rewrite ^/ http://bbs.artbeta.com/error.gif;

  #return 403;

  }

  }

posted @ 2012-07-10 13:41 泪雪无恨 阅读(147) | 评论 (0) | 编辑 收藏
 
php+nginx做下载服务器配置—X-Accel-Redirect
网络存储下载服务器需求配置
缘由:
“传统的Web服务器在处理文件下载的时候,总是先读入文件内容到应用程序内存,然后再把内存当中的内容发送给客户端浏览器。这种方式在应付当今大负载网站会消耗更多的服务器资源。sendfile是现代操作系统支持的一种高性能网络IO方式,操作系统内核的sendfile调用可以将文件内容直接推送到网卡的buffer当中,从而避免了Web服务器读写文件的开销,实现了“零拷贝”模式。 ”

附上传统的php做下载的处理方法,这种方法无疑还是将文件先读取到内存然后输出到客户的浏览器。
传统方法一:(最消耗内存){我曾经使用过这一种方法,文件大小8兆左右,同时500+人下载服务器负载直线飙升到20几直到宕机}
$file_fullpath = '/home/www/filepath/2011/12/31/abcd.zip';
header('Content-type: application/octet-stream');
@readfile($file_fullpath);

传统方法二:(降低内存消耗)
$file_fullpath = '/home/www/filepath/2011/12/31/abcd.zip';
header("Content-Type: application/octet-stream");
$data = fopen($file_fullpath, 'rb');
while (!feof($data)) {
        echo @fread($data, 8192);
        flush();
        ob_flush();
}
fclose($data);

本文将要使用的方法:主要应用nginx的X-Accel-Redirect将文件直接交给nginx做处理从而减少服务器负载
网站在服务器上的根目录为:/home/www
文件的真实地址为 http://www.artbeta.com/filespath/2011/12/31/abcd.zip
下载地址为:http://www.artbeta.com/down.php?filepath=2011/12/31/abcd.zip&filename=abcd.zip

本文档实现效果为:
1、只有通过php的下载地址能够下载并且“零内存”消耗。
2、通过http://www.artbeta.com/filespath/2011/12/31/abcd.zip 真实的路径是不允许下载的。
3、在php里可以进行一写下载权限的处理。
nginx配置文档
location /down
{
  internal;
  alias /home/www/filespath;
}
/* 此段是为了防止直接通过地址访问文件而做,可以作为防盗链*/
location /filepath
{
  internall;
}
php文件设置:
$filepath = '2011/12/31/abcd.zip';
$filename = 'abcd.zip';
header("Content-Disposition: attachment; filename= '{$filename}'");

header("Content-Type: application/octet-stream");

header('X-Accel-Redirect: /down/'.{$filepath});

header("X-Accel-Buffering: yes");

header("X-Accel-Limit-Rate :102400"); //速度限制 Byte/s

//header("Accept-Ranges: none");//单线程 限制多线程

在使用时候,必须要明白以下头信息是不能被Nginx更改的(即这些信息得由你来指定!)

Content-Type

Content-Disposition

Accept-Ranges

Set-Cookie

Cache-Control

Expires

如果其中的一些信息没有指定,那么重定向请求设置!

4.更多处理控制

你可以通过一下头信息来配置 X-Accel-Redirect 特性:

X-Accel-Limit-Rate: 1024

X-Accel-Buffering: yes|no

X-Accel-Charset: utf-8


posted @ 2012-07-10 13:34 泪雪无恨 阅读(6115) | 评论 (0) | 编辑 收藏
 
nginx+php上传文件大小配置修改
以前用php上传文件,先是修改php.ini的设置,前些日子服务器换了环境(采用nginx+php),今天突然发现稍大一点的文件不能上传了,纠结 半天,终于找到是nginx的client_max_body_size配置选项值造成的413错误。现在分享一下处理方法。
问题说明:
php.ini配置文件中upload_max_filesize设置为50M
post_max_size设置的值为100M
但是上传超过10兆的文件就会返回uploaderror 413错误。
服务器环境:
centos5.7 32位
nginx1.0.8
php5.2.17
解决方法:
1、如果你上传文件限制为50兆,则先修改php.ini
upload_max_filesize  50M
post_max_size  100M

2、然后修改nginx配置文件中:
这个配置选项值默认是1m,可以增加到8m以增加提高文件大小限制,我这里直接修改为100了,具体情况可根据自己的需求设置。(参 考:client_max_body_size大小要和php.ini中的upload_max_filesize、post_max_size中的最大 值一致或者稍大,这样就不会因为提交数据大小不一致出现的错误。)
  1. client_max_body_size 100m;
复制代码

ps:本次遇到的问题只觉得是php.ini配置文件的事了,变个思路,从大体环境考虑一下 问题总会解决,nginx的配置还是需要认真测试的。
posted @ 2012-07-10 13:28 泪雪无恨 阅读(944) | 评论 (0) | 编辑 收藏
 

2009年11月18日

艺塔,我们一直在努力!
艺塔团队组建一年了,去年的这个时候我们还在筹划,一年了,我们收获了很多!也学到了很多经验!
艺塔(Artbeta.Com),现在主要承接中小型网站建设,网站seo等业务,其中有1名网站策划人员,2名seo技术,2名php高级程序员,2名网站美工。
我们的队伍在不断壮大,我们的技术在不断进步!我们会一直努力,用最好的技术去服务客户!
望各位提出意见,谢谢大家的支持!艺塔网站 http://www.artbeta.com

posted @ 2009-11-18 00:02 泪雪无恨 阅读(705) | 评论 (0) | 编辑 收藏
 

2009年4月25日

打造更好的web技术交流平台
其实之前的域名还可以,只不过是一个cn的,新注了artbeta.com
定位是web技术交流,页面是仿cb的,当然不是完全一样了,听说cb的页面有版权,,嘿嘿,所以就不能一样了,但是形式还是那个样子滴,
其实做关于web开发的站已经不是好的定位了,没办法,做网站还是得靠自己的兴趣呀,只好还是做了web技术方面的站,希望大家多多支持啦!
里面很多文章都是搜集的精华文章,不信你点击web去看看 就知道了,骗你是小狗。。
不能白来了 给大家推荐篇文章吧:
低调做站的成功法则 http://www.artbeta.com/bbs/thread-693-1-1.html
posted @ 2009-04-25 14:20 泪雪无恨 阅读(667) | 评论 (0) | 编辑 收藏
 

2009年3月17日

discuz的博客样式发布了效果还可以
最近公司趋于平静,一直在做编辑的工作,这可不是长久之法啊,,所以就抽空看看discuz,自己一直在做一个个人网站,平时也不是太关注,正好借此机会改改版做的像个样子点,废话不多说,先看介绍:
Discuz!Blog风格v1.0.0基本简介:
首页加亮帖子推荐
精华帖子列表显示
【读取帖子内容(自定义字数)以博客样式排版】
本月(自定义)人气榜
论坛友情链接读取显示
【页面采用ajax翻页】
目前先实现最基本的功能再说了,以后慢慢改进。欢迎大家提出意见!
效果见:http://www.hackbaby.cn 

下载地址:http://www.hackbaby.cn/bbs/thread-537-1-1.html 

希望大家支持一下啦!!!
posted @ 2009-03-17 22:07 泪雪无恨 阅读(703) | 评论 (0) | 编辑 收藏
 

2009年3月5日

话说2009工作
2009,刚过完年就只身回到北京,第一天上班是农历正月十五,,,
这次返京回到中关村了,还是住在第一次来北京时住的地方,工资没太大变化,工作性质变成了一个所谓的“网站实习编辑”,合同上是这么说的,,,老大说让我暂时做这个,后面开发项目的时候打下手学点经验,,
其实真让我做php的工作我也不知道如何下手,前天准备写一个php上传类,寻思了半天好不容易凑合写了两句,,
最近在研究dz,传统的home页貌似很垃圾的样子,为什么不能做一个仿博客排版的页面呢?于是我动手开始写,,算是完成三分之一了吧,所需要的基本数据已经读出来了,开始考虑后面的处理,恼人的是ubb代码的转换,dz自身的处理函数还没找到,,,,
咳咳。。。说啥呢。。。总之2009工作开始 心里就不是很顺,,,看看往后怎么样了。。。
posted @ 2009-03-05 15:54 泪雪无恨 阅读(566) | 评论 (0) | 编辑 收藏
 
仅列出标题  下一页
随笔:13 文章:0 评论:1 引用:0
<2021年2月>
日一二三四五六
31123456
78910111213
14151617181920
21222324252627
28123456
78910111213

留言簿(1)

  • 给我留言
  • 查看公开留言
  • 查看私人留言

随笔档案

  • 2012年7月 (6)
  • 2009年11月 (1)
  • 2009年4月 (1)
  • 2009年3月 (2)
  • 2008年12月 (3)

文章分类

  • nginx (rss)
  • php (rss)

搜索

  •  

最新评论

  • 1. re: 上班很无奈
  • 唉,可怜的孩子。呵呵。
  • --holduser

阅读排行榜

  • 1. php+nginx做下载服务器配置—X-Accel-Redirect(6115)
  • 2. nginx+php上传文件大小配置修改(944)
  • 3. 艺塔,我们一直在努力!(705)
  • 4. discuz的博客样式发布了效果还可以(703)
  • 5. 【待测试】nginx多核cpu的优化方法 (675)

评论排行榜

  • 1. 上班很无奈(1)
  • 2. 闲(0)
  • 3. 新网站上线之际(0)
  • 4. 话说2009工作(0)
  • 5. discuz的博客样式发布了效果还可以(0)

Powered by: 博客园
模板提供:沪江博客
Copyright ©2021 泪雪无恨