很早看了张晏写的《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: 805NginxStatus 显示的内容意思如下:
* 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