本文使用nginx处理静态文件和做负载反向代理,apache负责处理php动态页面,通过简单的配置实现动静分离。
由于apache处理静态页面的效率不高,而一般网站大多数的内容都是静态文件(如图片、html、css、js等),经过nginx前端的反向代理加速和过滤,后端apache处理请求的压力便可大大减少,只需负责处理动态内容就可以了。在性能与稳定性的权衡下,使用nginx+apache搭配便可让它们在各自擅长的领域大展拳脚。
一、安装与配置Apache
1. 安装Apache2
# sudo yum install httpd
2. 修改配置文件
修改服务端口号,将80端口改成8080。
# sudo vim /etc/httpd/conf/httpd.conf ... #Listen 12.34.56.78:80 Listen 8080... |
3. 启动服务并设置开机自启动
# sudo /etc/init.d/httpd start # sudo /sbin/chkconfig httpd on
二、安装与配置Nginx
1. 启用 EPEL repo源
如果使用的CentOS 5.x版本,安装以下repo源:
# sudo rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm如果使用的CentOS 6.x版本,安装以下repo源:# sudo rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm2. 安装nginx
# sudo yum install nginx
3. 修改配置文件
主配置文件/etc/nginx/nginx.conf无需做太大改动,只需将worker_processes设置成与机器CPU核数相等即可(如CPU数为1,则worker_processes 1;)。# sudo vim /etc/nginx/conf.d/virtual.conf
server { listen 80; server_name 192.168.85.83; root /var/www/html; index index.html index.htm index.php; location ~ \.(php)?$ { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://127.0.0.1:8080; } location ~ .*.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ { expires 15d; } location ~ .*.(js|css)?$ { expires 1h; } } |
# sudo /etc/init.d/nginx start# sudo /sbin/chkconfig nginx on
三、安装PHP(可选安装PHP-FPM)
# sudo yum install php# sudo /etc/init.d/httpd restart FPM安装详见 http://my.oschina.net/alanlqc/blog/148126
四、测试
静态页面:
# echo "This is 192.168.85.83" > /data/www/index.html动态页面:
# echo "<?php phpinfo(); ?>" > /var/www/html/info.php通过curl -I 可以看到访问静态页面的时候是通过nginx处理的
# curl -I http://192.168.85.83 HTTP/1.1 200 OK Server: nginx/1.0.15 Date: Mon, 29 Jul 2013 08:42:27 GMT Content-Type: text/html Content-Length: 22 Last-Modified: Sun, 28 Jul 2013 19:17:58 GMT Connection: keep-alive Expires: Tue, 13 Aug 2013 08:42:27 GMT Cache-Control: max-age=1296000 Accept-Ranges: bytes
验证php是通过apache 处理的:
关闭apache 再测试访问php页面,看到访问不到php,但是能访问到静态页面# sudo /etc/init.d/httpd stop五、参考文章
http://www.ha97.com/5119.html
http://pmghong.blog.51cto.com/3221425/1217151 http://www.rackspace.com/knowledge_center/article/centos-installing-nginx-via-yum