如何将apache转为nginx

2009年12月21日 由 LEO 留言 »

很早看了张晏写的《Nginx 0.7.x + PHP 5.2.8(FastCGI)搭建胜过Apache十倍的Web服务器(第4版)[原创]》,就有冲动将我们基于xampp的web服务器转为nginx。由于当时流量不高,负载也就2到3,所以也就放着了。

现在网站流量已经是原来10多倍,负载也达到5以上,感觉服务器有压力,于是决定将其完成。这次apache转为nginx非常顺利,这得非常感谢张晏最新的《Nginx 0.8.x + PHP 5.2.10(FastCGI)搭建胜过Apache十倍的Web服务器(第5版)[原创]

整个过程如下:

1、操作系统检查,由于我们是centos5.3 所以无需要什么工作

2、按照张晏最新的文章,操作完成。

3、部署我们网站上去

出现以下错误

”502 Bad Gateway“

开始按照网上提供的方法,都没有解决,后来重新启动一下机器就OK了。

4、升级nginx到最新,当时最新的是0.8.30

4.1 关闭nginx

/usr/local/webserver/php/sbin/php-fpm stop
kill -TERM `cat /usr/local/webserver/nginx/nginx.pid`

4.2 下载编译最新nginx

cd /data0/software

wget http://nginx.org/download/nginx-0.8.30.tar.gz

tar zxvf nginx-0.8.30.tar.gz
cd nginx-0.8.30/
./configure –user=www –group=www –prefix=/usr/local/webserver/nginx –with-http_stub_status_module –with-http_ssl_module
make && make install
cd ../

4.3 nginx的重新启动

ulimit -SHn 65535
/usr/local/webserver/php/sbin/php-fpm start
/usr/local/webserver/nginx/sbin/nginx

5、Nginx的Rewrite配置

我以wordpress为例,在wordpress后台设置固定链接为自定义结构:/%postname%/

然后打开/usr/local/webserver/nginx/conf/nginx.conf 在此段:

server
{
listen       80;
server_name  http://www.dusike.com/;
index index.html index.htm index.php;
root  /data0/htdocs/blog/leoblog;

#limit_conn   crawler  20;

location ~ .*\.(php|php5)?$
{
#fastcgi_pass  unix:/tmp/php-cgi.sock;
fastcgi_pass  127.0.0.1:9000;
fastcgi_index index.php;
include fcgi.conf;
}

加入以下

location / {
index index.php index.html;
if (!-e $request_filename)
{
rewrite ^/(.+)$ /index.php?p=$1 last;
}
}

然后执行

/usr/local/webserver/nginx/sbin/nginx -t

kill -HUP `cat /usr/local/webserver/nginx/nginx.pid`

apach htaccess 转换成 nginx rewrite rule 有一个工具,可以协助我们完成转换

http://www.anilcetin.com/convert-apache-htaccess-to-nginx/

使用这个工具 ,特别注意的是,在转换之前 一定要确保原来的规则的空格,也就是说间隔之间只能一个空格,否则转换出错,像下面两个完全不一样:

RewriteRule ^1284-([a-zA-Z0-9&\-\+\.\_'"]*)/ 100001284-$1/ [R=301,L]

RewriteRule  ^1284-([a-zA-Z0-9&\-\+\.\_'"]*)/  100001284-$1/ [R=301,L] #这个是错的,多了一个空格

还有一个提醒nginx,多个域名指向一个有自动指向功能,参考http://blog.s135.com/post/382/

6、nginx监控

参考张宴文章中的配置,监控结果如下:

Active connections: 968
server accepts handled requests
658069 658069 2842843
Reading: 20 Writing: 143 Waiting: 805

NginxStatus 显示的内容意思如下:
* active connections – 当前 Nginx 正处理的活动连接数。
* server accepts handled requests — 总共处理了 658069 个连接 , 成功创建 658069 次握手 ( 证明中间没有失败的 ), 总共处理了 2842843 个请求 ( 平均每次握手处理了 1.3 个数据请求 )。
* reading — nginx 读取到客户端的 Header 信息数。
* writing — nginx 返回给客户端的 Header 信息数。
* waiting — 开启 keep-alive 的情况下,这个值等于 active – (reading + writing),意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接。

作者: 蔡文卫 Leo@yicike.com
版权所有:亿赐客比较购物搜索网(http://www.yicike.com/

原创文章,转载请注明: 转载自亿赐客比较购物搜索网

本文链接地址: 如何将apache转为nginx

广告位

留下评论