乱砍技巧的Nginx
Nginx 是Igor写的一个高性能网络服务器和邮件代理服务器Sysoev和好替换为亚帕基印第安人HTTPD,市场商情领头者。 Nginx迅速地增加它的与加入它的主要网站的市场份额喜欢wordpress.com。 在这次勘测期间,在6月2008年Netcraft调查,而nginx比百万个站点,获取了更多LiteSpeed丢失了超过600一千个站点; 更多比加倍在数字。 WordPress blogging的系统最近 转换 所有它的装载平衡器成nginx,使用 在上游回锅碎肉模块 为8-9一千个请求服务每秒。 我们也决定移动我们的一些网站向Nginx。 这配置的Nginx少量根本技巧和总指导路线。 这不是读文献(rtfm)的一个替补。 然后然而,当您在读书和再读nginx文献以后是陷进下面读。 您那时将了解下面技巧的价值
我们将集中于一般配置技巧以及为真正主持。
注: 在真正主持您为多个网站使用同样IP地址。 每个网站例如在您有wordpress的一个网站很可能将有分开的.htaccess (假设您最初被主持了在亚帕基印第安人HTTPD网络服务器)文件,分开的根目录等,而在另一边您可以有MODx,并且谁可能知道在三的phpBB。 所有这些不同的.htaccess方针在nginx配置文件需要进来。
Nginx有一个主要限制在重写规则您不可能强加重写规则的多个条件。 使用多个RewriteCond方针,在另一只手的亚帕基印第安人HTTPD提供一种好解答。
在另一只手的Nginx准许,如果声明。 您能有重写规则内,如果块。 然而,如果块是有限的。 您没有和或也不增加多个情况到唯一,如果块。 并且您不可能筑巢,如果块。 没有声明。 然而您能使用正则表达式,因此下列是可能的:
如果($request_method! ~ ^ (得到|头) $) {
回归501;
}
然而您不可能每次检查二可变物。 特别地在真正主持的情景这样局限可能经常被察觉象showstoppers。 然而我发现与小的额外认为您可能搞到创新解答满足您的特别需要。 例如许多PHP基于网软件的一项非常共同.htaccess规则包括wordpress是:
RewriteEngine
RewriteBase/
RewriteCond % {REQUEST_FILENAME}! - f
RewriteCond % {REQUEST_FILENAME}! - d
RewriteRule。 /index.php [L]
它说,如果请求的文件名不存在并且也不是目录然后祈求index.php。
然而,当RewriteCond是同样多数PHP基于软件的时RewriteRule不是。 例如重写规则的部分phpBB的是:
RewriteCond % {REQUEST_FILENAME}! - f
RewriteCond % {REQUEST_FILENAME}! - d
RewriteCond % {REQUEST_FILENAME}! - l
RewriteRule ^ [a-z0-9_-] + ?(p ([0-9] +) \ .html) ?$ /viewforum.php ?start=$2 [QSA、L, NC]
暂时忽略第三RewriteCond。 它也检查符号链。 您能看到重写规则是不同的。 假设您需要主持WordPress和一个唯一IP地址的(唯一服务器) phpBB网站。 因为前二个规则是共同的您能做写将应用于两个服务器的以下规则:
#,如果它是文件、目录或者符号链
如果(- e $request_filename) {
断裂;
}
这做和一样早先RewriteCond做并且是可适用的到在服务器上的所有网站的事(假设您安置了它在服务器之内)。
现在您能有您的单独服务器的分开的重写规则。 例如您能为您的WordPress博客使用这个规则:
# blog.example.com的重写规则
如果($host ~* ^blog \ .example \ .com$) {
重写^ (。*) $ /index.php ?q=$1持续;
断裂;
}
断裂是保证进一步规则没有在的所有早先声明以后被处理,如果情况被执行了。
为时保证进一步重写规则没有被执行,当重写规则配比时。
我最近写了三篇文章重点在真正主持:
我们增加少量更多技巧完成本章,将我们?
如何防止文件从开始。 (象.htaccess)从被观看在Nginx ?
在上面附近增加此在您的服务器块之内:
地点~/\。 {
否认所有;
}
这将拒绝所有外在要求与名字的文件从开始。 (小点)。
如何改万维网URL方向到非万维网变形?
例如这您怎么能改象http://www.example.com/yourpage的所有请求方向到http://example.com/yourpage :
如果($host ~* ^www \。(。*)) {
设置$host_without_www $1;
重写^ (。*) $ http://$host_without_www$1永久; # $1包含‘/yourpage’, ‘不是www.example.net/yourpage'
}
注: 这个例子是从他们的网站
如何转换亚帕基印第安人HTTPD重写规则成Nginx重写规则?
我谈论了有些细微差异在和在文章上之上。 我可以给的唯一最大的诀窍那在RewriteRule的正则表达式与请求URI匹配,不用a/首先的亚帕基印第安人HTTPD,而在Nginx它与与深砍的一请求uri首先配比。 那么例如亚帕基印第安人HTTPD重写规则例如此:
RewriteRule ^ [a-z0-9_-] *-f ([0-9] +)/?(p ([0-9] +) \ .html) ?$ /viewforum.php ?f=$1&start=$3 [QSA、L, NC]
成为这在nginx :
重写^/[a-z0-9_-] *-f ([0-9] +)/?(p ([0-9] +) \ .html) ?$ /viewforum.php ?f=$1&start=$3持续;
简单,是?
注: RewriteCond的需要被实施使用,如果方针如上所述。
如何停止采伐图象/静态文件?
如何为图象/静态文件指定有效期限?
#直接服务静态文件
地点~* ^.+。(JPG|jpeg|gif|css|png|js|ico|html) $ {
access_log ;
到期 30d;
}
感到自由谈论关于这篇文章在我们的 论坛。
PS. 万一您想知道乱砍不是关于打破软件或使用它恶意目的(崩裂是)。 乱砍是关于知道在亲密的细节的一个主题。 不幸地打印媒介新闻工作者经常混淆在乱砍和崩裂之间和给乱砍坏名声。
PPS. 什么我未探索是在nginx和亚帕基印第安人HTTPD之间的表现区别。 我在那以后将更新。
归档在 企业软件之下, 标题新闻, 怎么对, Linux, 开放源码软件, 赞成Blogging, 技术笔记, 网, 网2.0, 网络主持, 网服务, WordPress, nginx |
|
RSS 2.0 |
Trackback 这篇文章 |
给这篇文章发电子邮件
您可以也喜欢读 |


增加到Technorati喜爱
































