nginx设置上传目录无执行权限
[ 2010/04/30 08:36 | by admin ]
在windows+iis下,可以设置上传目录,类似:upload,uploadfile,attachments,这样的目录下面无脚本执行权限,从而防止非法用户上传脚本得到webshell
nginx上也很简单,我们使用location。。如下:
location ~ ^/upload/.*\.(php|php5)$
{
deny all;
}
其中upload换为你要设置的目录名字
这条规则的含义是匹配请求连接中开头是/upload/,中间匹配任意字符,结尾匹配.php或者.php5的页面,最后利用deny all禁止访问,这样就防止了上传目录的脚本执行权限
nginx上也很简单,我们使用location。。如下:
location ~ ^/upload/.*\.(php|php5)$
{
deny all;
}
其中upload换为你要设置的目录名字
这条规则的含义是匹配请求连接中开头是/upload/,中间匹配任意字符,结尾匹配.php或者.php5的页面,最后利用deny all禁止访问,这样就防止了上传目录的脚本执行权限
为nginx设置默认虚拟主机 空主机头 默认主机头
[ 2010/04/30 08:35 | by admin ]
nginx的默认虚拟主机在用户通过IP访问,或者通过未设置的域名访问(比如有人把他自己的域名指向了你的ip)的时候生效
最关键的一点事,在server的设置里面添加这一行:
listen 80 default;
后面的default参数表示这个是默认虚拟主机。
这个设置非常有用。
比如别人通过ip或者未知域名访问你的网站的时候,你希望禁止显示任何有效内容,可以给他返回500.
目前国内很多机房都要求网站主关闭空主机头,防止未备案的域名指向过来造成麻烦。就可以这样设置:
server {
listen 80 default;
return 500;
}
如果不用500,也可以把它绑定到一个无法访问的目录,这样也能起到此作用。
也可以把这些流量收集起来,导入到自己的网站,只要做以下跳转设置就可以:
server {
listen 80 default;
rewrite ^(.*) http://www.myip.net permanent;
}
最关键的一点事,在server的设置里面添加这一行:
listen 80 default;
后面的default参数表示这个是默认虚拟主机。
这个设置非常有用。
比如别人通过ip或者未知域名访问你的网站的时候,你希望禁止显示任何有效内容,可以给他返回500.
目前国内很多机房都要求网站主关闭空主机头,防止未备案的域名指向过来造成麻烦。就可以这样设置:
server {
listen 80 default;
return 500;
}
如果不用500,也可以把它绑定到一个无法访问的目录,这样也能起到此作用。
也可以把这些流量收集起来,导入到自己的网站,只要做以下跳转设置就可以:
server {
listen 80 default;
rewrite ^(.*) http://www.myip.net permanent;
}
Nginx+iptables屏蔽访问Web页面过于频繁的IP
[ 2010/04/30 08:32 | by admin ]
通过分析nginx的日志来过滤出访问过于频繁的IP地址,然后添加到nginx的blockip.conf,并重启nginx
脚本如下:
#!/bin/sh
nginx_home = /Data/app_1/nginx
log_path = /Data/logs
/usr/bin/tail -n50000 $log_path/access.log \
|awk ‘$8 ~/aspx/{print $2,$13}’ \
|grep -i -v -E “google|yahoo|baidu|msnbot|FeedSky|sogou” \
|awk ‘{print $1}’|sort|uniq -c |sort -rn \
|awk ‘{if($1>150)print “deny “$2″;”}’> $nginx_home/conf/vhosts/blockip.conf
/bin/kill -HUP `cat $nginx_home/nginx.pid`
也可以通过分析nginx日志过滤出频繁访问IP,直接用iptables屏蔽这个IP,就用不着重启nginx了,并且屏蔽效果更好。
单个IP的命令是
iptables -I INPUT -s 124.115.0.199 -j DROP
封IP段的命令是
iptables -I INPUT -s 124.115.0.0/16 -j DROP
封整个段的命令是
iptables -I INPUT -s 194.42.0.0/8 -j DROP
封几个段的命令是
iptables -I INPUT -s 61.37.80.0/24 -j DROP
iptables -I INPUT -s 61.37.81.0/24 -j DROP
刚才不小心搞的自己都连不上了-_-!!!
iptables -I INPUT -p tcp –dport 80 -s 124.115.0.0/24 -j DROP
以后用这种只封80端口就行了,不会出问题!
iptables -I INPUT -p tcp –dport 80 -s 124.115.0.0/24 -j DROP
iptables -I INPUT -s 61.37.81.0/24 -j DROP
解封
iptables -F
清空
iptables -D INPUT 数字
脚本如下:
#!/bin/sh
nginx_home = /Data/app_1/nginx
log_path = /Data/logs
/usr/bin/tail -n50000 $log_path/access.log \
|awk ‘$8 ~/aspx/{print $2,$13}’ \
|grep -i -v -E “google|yahoo|baidu|msnbot|FeedSky|sogou” \
|awk ‘{print $1}’|sort|uniq -c |sort -rn \
|awk ‘{if($1>150)print “deny “$2″;”}’> $nginx_home/conf/vhosts/blockip.conf
/bin/kill -HUP `cat $nginx_home/nginx.pid`
也可以通过分析nginx日志过滤出频繁访问IP,直接用iptables屏蔽这个IP,就用不着重启nginx了,并且屏蔽效果更好。
单个IP的命令是
iptables -I INPUT -s 124.115.0.199 -j DROP
封IP段的命令是
iptables -I INPUT -s 124.115.0.0/16 -j DROP
封整个段的命令是
iptables -I INPUT -s 194.42.0.0/8 -j DROP
封几个段的命令是
iptables -I INPUT -s 61.37.80.0/24 -j DROP
iptables -I INPUT -s 61.37.81.0/24 -j DROP
刚才不小心搞的自己都连不上了-_-!!!
iptables -I INPUT -p tcp –dport 80 -s 124.115.0.0/24 -j DROP
以后用这种只封80端口就行了,不会出问题!
iptables -I INPUT -p tcp –dport 80 -s 124.115.0.0/24 -j DROP
iptables -I INPUT -s 61.37.81.0/24 -j DROP
解封
iptables -F
清空
iptables -D INPUT 数字
Php-fpm中文说明
[ 2010/04/30 08:29 | by admin ]
Php-fpm中文说明
What is FastCGI
From PHP-FPM
Jump to: navigation, search
FastCGI 是一个可伸缩、高速的在web server和脚本语言间通迅的接口。关于FastCGI技术的更多信息可以在官方网站和Wikipedia看到。
FastCGI 被许多脚本语言所支持,包括 php,如果用 --enable-fastcgi 选项编译的话。
多数流行的web server都支持 FastCGI。包括Apache(mod_fastcgi和mod_fcgid),Zeus,nginx和lighttpd。
FastCGI 的主要优点是把动态语言和 web server 分离开来。这种技术允许 web server 和动态语言运行在不同的主机上。这可以改进可扩展性和安全性而没有大的效率损失。
php-fpm 可以和任何支持外部 FastCGI 技术的 web server 一起使用。
Retrieved from "http://php-fpm.org/wiki/CN:What_is_FastCGI"
What is PHP-FPM
From PHP-FPM
Jump to: navigation, search
很不幸,官方网站 php.net 上的 php 在将 FastCGI SAPI 用于生产环境方面有许多已知的问题。
下面是关于启用 FastCGI SAPI 时的问题和 php-fpm 是如何解决他们的对比列表。
描述 php 自带的 spawn-fcgi + spawn-php.sh + daemontools php-fpm
php 守护进程: pid file, log file, setsid(), setuid(), setgid(), chroot() (-) (+) (+)
进程管理。可以用 "graceful" 来停止并启动 php worker 进程而不会丢失请求。能够平滑地升级配置和二进制程序而不丢失任何请求。 php4 (-), php5 (只有 graceful) (-) (+)
严格限制来源请求的 web server 的 ip 地址 php4 (-), php5 (+) (从 5.2.2 开始) (-) (+)
根据负载动态调整进程数 (-) (-) TODO
用不同的 uid/gid/chroot/environment 和不同的 php.ini 选项启动 worder 进程。你不需要 safe mode 了! (-) (-) (+)
记录业务进程 stdout 和 stderr 日志 (-) (-) (+)
如果使用优化器,在共享内存意外破坏的情况下紧急重启所有的进程 (-) (-) (+)
如果 set_time_limit() 失败,确保进程会结束 (-) (-) (+)
特性
Error header
(+)
支持加速上传
(+)
fastcgi_finish_request()
(+)
SlowLog
(+)
下载地址:
http://php-fpm.org/downloads/
Documentation
From PHP-FPM
Jump to: navigation, search
邮件列表
如果你有问题的话,请不要犹豫在邮件组里写邮件。
• English: highload-php-en
• Russian: highload-php-ru
简要说明
php-fpm 已经在 Linux、MacOSX、Solaris 和 FreeBSD 上测试通过。
确信 libxml2(在某些系统上叫做libxml2-devel)已经安装。
下载最小的 php 和 php-fpm
$ bzip2 -cd php-5.2.5.tar.bz2 | tar xf -
$ gzip -cd php-5.2.5-fpm-0.5.7.diff.gz | patch -d php-5.2.5 -p1
$ cd php-5.2.5 && ./configure --enable-fastcgi --enable-fpm
$ make all install
编辑 $prefix/etc/php-fpm.conf
运行 $prefix/bin/php-cgi --fpm
仔细检查 $prefix/logs/php-fpm.log
运行 phpinfo() 检查你的网站是否还正常运行
master 进程的 pid 被存放在 $prefix/logs/php-fpm.pid
master进程可以理解以下信号
SIGINT, SIGTERM 立刻终止
SIGQUIT 平滑终止
SIGUSR1 重新打开日志文件
SIGUSR2 平滑重载所有worker进程并重新载入配置和二进制模块
Retrieved from "http://php-fpm.org/wiki/CN:Documentation"
FAQ
From PHP-FPM
Jump to: navigation, search
Contents
[hide]
• 1 php-fpm 可以和 ZendOptimize 一起用吗?
• 2 php-fpm 可以和 ZendPlatform、xcache、eAccelerator、APC 等的优化器一起用吗?
• 3 为什么我要给 php 打补丁呢?spawn-fcgi 不需要这样!
• 4 为什么要用 root 运行 php-fpm 呢?这安全吗?
• 5 php-fpm 可以加速 php 脚本处理速度吗?
• 6 如果我把我的网站从 mod_php 迁移到 php-fpm ,我会得到性能提升吗?
• 7 php-fpm 将来会被官方的 php 包含吗?
php-fpm 可以和 ZendOptimize 一起用吗?
完全可以。
php-fpm 可以和 ZendPlatform、xcache、eAccelerator、APC 等的优化器一起用吗?
是的。php-fpm 的架构和任何一种用于高速 opcode 缓存的共享内存都适用。唯一的限制是:所有的 worker 进程只能适用一个缓存,即使它们用不同的 uid/gid 运行。
为什么我要给 php 打补丁呢?spawn-fcgi 不需要这样!
php-fpm 的创建是为了增强方便管理。没有打过补丁的 php 不能做到:
• 平滑重启 php 而不丢失请求,包括升级 php 二进制文件 以及/或者 扩展。
• 用不同的 uid / gid / chroot 环境运行 worker 进程
• 所有的设置只有一个配置文件
• 根据负载动态请求 (TODO)
• 对 php 请求实时统计性能 (TODO)
如果你自己不能为PHP打补丁,那么例如spawn-fcgi之类的其他工具更适合你,尽管它仅仅有有限的可选功能;如果你需要多个FastCGI池,还需要定制脚本。
为什么要用 root 运行 php-fpm 呢?这安全吗?
用 root 权限启动 php-fpm 只有在你打算用不同 uid/gid 的 php 来处理请求时才有意义。比如,在共享主机上的不同站点。因为只有在 master 进程用 root 运行的时候,才可以建立不同 uid/gid 的子进程。这是相当安全的。master 进程自己从来不会去处理请求。在任何情况下,php-fpm 都不会用 root 身份来处理请求。
php-fpm 可以加速 php 脚本处理速度吗?
不,它不会影响处理速度。不过,如果你使用一些特殊特性,对于一些特定的请求还是可以有性能提升的。
如果我把我的网站从 mod_php 迁移到 php-fpm ,我会得到性能提升吗?
通常,当有服务器上有大量空闲内存可用时,能从迁移到 php-fpm 中得到的性能提升可能不大。但是如果内存并不充裕,性能提升还是很可观的,在某些情况下可以达到 300-500%。这可能是由于 nginx + php-fpm 一般会比 Apache + mod_php 使用更少的内存。而且 VFS 缓存会由于更多的空余内存而更有效地工作。
php-fpm 将来会被官方的 php 包含吗?
我希望如此。目前,php-fpm 代码的协议是 GPL 。所以现在 php-fpm 的代码与 php 协议(类似 bsd)并不匹配。这是临时性措施。这样的选择是为了简化开发过程。一旦代码的功能完备,比如自适应生成子进程和其他一些东西,协议会改为一个相匹配的。之后,php-fpm 会正式发布给 php 开发团队,并被建议包含。 现在许可证已经修改成类BSD的许可证。这意味着它能包含到PHP或者PECL。我们已经接触了PHP小组和PECL小组,努力尝试把它包含或部分包含进PHP核心(并且可能进程管理部分有hooks和程序存在于PHP核心之外,这样它就能更快,并且独立于PHP各版本)
Retrieved from "http://php-fpm.org/wiki/CN:FAQ"
About
From PHP-FPM
Jump to: navigation, search
嗨,我的名字叫 Andrei Nigmatulin, 我是 php-fpm 的作者。
从 2004 年开始,我就在等有什么人让 PHP FastCGI 能满足产品环境,但我等不下去了。
php-fpm 是在数个项目种使用 PHP 的 FastCGI SAPI 中的知识、经验和想法的产物。
php-fpm 可以在 GPL 协议下用在公共用途。和 php-fpm 绑定的修改版的 libevent 是在 BSD 协议下发布的。
我需要得到您的反馈——新的想法和建议——来改进和优化 php FastCGI SAPI。 如果您有什么想法、意见、补充和建议,我会很高兴,很原意听取,也许还会实现他们。给给我发邮件吧。(地址在本页的末尾)。
如果你想支持 php-fpm 的开发,可以作一些捐赠: Paypal Yandex.Money
本文内容来自于:wiki
http://php-fpm.org/wiki/CN:Home
What is FastCGI
From PHP-FPM
Jump to: navigation, search
FastCGI 是一个可伸缩、高速的在web server和脚本语言间通迅的接口。关于FastCGI技术的更多信息可以在官方网站和Wikipedia看到。
FastCGI 被许多脚本语言所支持,包括 php,如果用 --enable-fastcgi 选项编译的话。
多数流行的web server都支持 FastCGI。包括Apache(mod_fastcgi和mod_fcgid),Zeus,nginx和lighttpd。
FastCGI 的主要优点是把动态语言和 web server 分离开来。这种技术允许 web server 和动态语言运行在不同的主机上。这可以改进可扩展性和安全性而没有大的效率损失。
php-fpm 可以和任何支持外部 FastCGI 技术的 web server 一起使用。
Retrieved from "http://php-fpm.org/wiki/CN:What_is_FastCGI"
What is PHP-FPM
From PHP-FPM
Jump to: navigation, search
很不幸,官方网站 php.net 上的 php 在将 FastCGI SAPI 用于生产环境方面有许多已知的问题。
下面是关于启用 FastCGI SAPI 时的问题和 php-fpm 是如何解决他们的对比列表。
描述 php 自带的 spawn-fcgi + spawn-php.sh + daemontools php-fpm
php 守护进程: pid file, log file, setsid(), setuid(), setgid(), chroot() (-) (+) (+)
进程管理。可以用 "graceful" 来停止并启动 php worker 进程而不会丢失请求。能够平滑地升级配置和二进制程序而不丢失任何请求。 php4 (-), php5 (只有 graceful) (-) (+)
严格限制来源请求的 web server 的 ip 地址 php4 (-), php5 (+) (从 5.2.2 开始) (-) (+)
根据负载动态调整进程数 (-) (-) TODO
用不同的 uid/gid/chroot/environment 和不同的 php.ini 选项启动 worder 进程。你不需要 safe mode 了! (-) (-) (+)
记录业务进程 stdout 和 stderr 日志 (-) (-) (+)
如果使用优化器,在共享内存意外破坏的情况下紧急重启所有的进程 (-) (-) (+)
如果 set_time_limit() 失败,确保进程会结束 (-) (-) (+)
特性
Error header
(+)
支持加速上传
(+)
fastcgi_finish_request()
(+)
SlowLog
(+)
下载地址:
http://php-fpm.org/downloads/
Documentation
From PHP-FPM
Jump to: navigation, search
邮件列表
如果你有问题的话,请不要犹豫在邮件组里写邮件。
• English: highload-php-en
• Russian: highload-php-ru
简要说明
php-fpm 已经在 Linux、MacOSX、Solaris 和 FreeBSD 上测试通过。
确信 libxml2(在某些系统上叫做libxml2-devel)已经安装。
下载最小的 php 和 php-fpm
$ bzip2 -cd php-5.2.5.tar.bz2 | tar xf -
$ gzip -cd php-5.2.5-fpm-0.5.7.diff.gz | patch -d php-5.2.5 -p1
$ cd php-5.2.5 && ./configure --enable-fastcgi --enable-fpm
$ make all install
编辑 $prefix/etc/php-fpm.conf
运行 $prefix/bin/php-cgi --fpm
仔细检查 $prefix/logs/php-fpm.log
运行 phpinfo() 检查你的网站是否还正常运行
master 进程的 pid 被存放在 $prefix/logs/php-fpm.pid
master进程可以理解以下信号
SIGINT, SIGTERM 立刻终止
SIGQUIT 平滑终止
SIGUSR1 重新打开日志文件
SIGUSR2 平滑重载所有worker进程并重新载入配置和二进制模块
Retrieved from "http://php-fpm.org/wiki/CN:Documentation"
FAQ
From PHP-FPM
Jump to: navigation, search
Contents
[hide]
• 1 php-fpm 可以和 ZendOptimize 一起用吗?
• 2 php-fpm 可以和 ZendPlatform、xcache、eAccelerator、APC 等的优化器一起用吗?
• 3 为什么我要给 php 打补丁呢?spawn-fcgi 不需要这样!
• 4 为什么要用 root 运行 php-fpm 呢?这安全吗?
• 5 php-fpm 可以加速 php 脚本处理速度吗?
• 6 如果我把我的网站从 mod_php 迁移到 php-fpm ,我会得到性能提升吗?
• 7 php-fpm 将来会被官方的 php 包含吗?
php-fpm 可以和 ZendOptimize 一起用吗?
完全可以。
php-fpm 可以和 ZendPlatform、xcache、eAccelerator、APC 等的优化器一起用吗?
是的。php-fpm 的架构和任何一种用于高速 opcode 缓存的共享内存都适用。唯一的限制是:所有的 worker 进程只能适用一个缓存,即使它们用不同的 uid/gid 运行。
为什么我要给 php 打补丁呢?spawn-fcgi 不需要这样!
php-fpm 的创建是为了增强方便管理。没有打过补丁的 php 不能做到:
• 平滑重启 php 而不丢失请求,包括升级 php 二进制文件 以及/或者 扩展。
• 用不同的 uid / gid / chroot 环境运行 worker 进程
• 所有的设置只有一个配置文件
• 根据负载动态请求 (TODO)
• 对 php 请求实时统计性能 (TODO)
如果你自己不能为PHP打补丁,那么例如spawn-fcgi之类的其他工具更适合你,尽管它仅仅有有限的可选功能;如果你需要多个FastCGI池,还需要定制脚本。
为什么要用 root 运行 php-fpm 呢?这安全吗?
用 root 权限启动 php-fpm 只有在你打算用不同 uid/gid 的 php 来处理请求时才有意义。比如,在共享主机上的不同站点。因为只有在 master 进程用 root 运行的时候,才可以建立不同 uid/gid 的子进程。这是相当安全的。master 进程自己从来不会去处理请求。在任何情况下,php-fpm 都不会用 root 身份来处理请求。
php-fpm 可以加速 php 脚本处理速度吗?
不,它不会影响处理速度。不过,如果你使用一些特殊特性,对于一些特定的请求还是可以有性能提升的。
如果我把我的网站从 mod_php 迁移到 php-fpm ,我会得到性能提升吗?
通常,当有服务器上有大量空闲内存可用时,能从迁移到 php-fpm 中得到的性能提升可能不大。但是如果内存并不充裕,性能提升还是很可观的,在某些情况下可以达到 300-500%。这可能是由于 nginx + php-fpm 一般会比 Apache + mod_php 使用更少的内存。而且 VFS 缓存会由于更多的空余内存而更有效地工作。
php-fpm 将来会被官方的 php 包含吗?
我希望如此。目前,php-fpm 代码的协议是 GPL 。所以现在 php-fpm 的代码与 php 协议(类似 bsd)并不匹配。这是临时性措施。这样的选择是为了简化开发过程。一旦代码的功能完备,比如自适应生成子进程和其他一些东西,协议会改为一个相匹配的。之后,php-fpm 会正式发布给 php 开发团队,并被建议包含。 现在许可证已经修改成类BSD的许可证。这意味着它能包含到PHP或者PECL。我们已经接触了PHP小组和PECL小组,努力尝试把它包含或部分包含进PHP核心(并且可能进程管理部分有hooks和程序存在于PHP核心之外,这样它就能更快,并且独立于PHP各版本)
Retrieved from "http://php-fpm.org/wiki/CN:FAQ"
About
From PHP-FPM
Jump to: navigation, search
嗨,我的名字叫 Andrei Nigmatulin, 我是 php-fpm 的作者。
从 2004 年开始,我就在等有什么人让 PHP FastCGI 能满足产品环境,但我等不下去了。
php-fpm 是在数个项目种使用 PHP 的 FastCGI SAPI 中的知识、经验和想法的产物。
php-fpm 可以在 GPL 协议下用在公共用途。和 php-fpm 绑定的修改版的 libevent 是在 BSD 协议下发布的。
我需要得到您的反馈——新的想法和建议——来改进和优化 php FastCGI SAPI。 如果您有什么想法、意见、补充和建议,我会很高兴,很原意听取,也许还会实现他们。给给我发邮件吧。(地址在本页的末尾)。
如果你想支持 php-fpm 的开发,可以作一些捐赠: Paypal Yandex.Money
本文内容来自于:wiki
http://php-fpm.org/wiki/CN:Home