Nginx-负载均衡实践(一、对PHP-FPM进行分摊)

应用的服务器分为前端和后端

  前端服务器: 负责对静态文件(比如JS、CSS、图片)等的响应, 以及把PHP请求分发到后端服务器

  后端服务器: 处理前端服务器分发而来的PHP请求

前端服务器: 192.168.1.10

后端服务器: 192.168.1.11, 192.168.1.12

 

后端服务器的配置:

  两台后端服务器分别配置 php-fpm 的监听得之和端口, 可以通过修改php-fpm.conf或对应php-fpm配置文件来修改监听地址和端口

  由于是 php-fpm, 所以配置如下

  192.168.1.11 服务器中php-fpm的配置信息

listen=192.168.1.11:9000

 

  192.168.1.12 服务器中php-fpm的配置信息

 

listen=192.168.1.12:9000

  修改完后重启两台服务器的 php-fpm

 

前端服务器的配置:

#其中 "blog" 表示随意起的一个 upstream 的名称, 下文要用, 此块用来设置后端服务器
upstream blog {
    server 192.168.1.11:9000 weight=1; #192.168.1.11:9000为后端服务器192.168.1.11的php-fpm进程监听的地址和端口
    server 192.168.1.12:9000 weight=1; #192.168.1.12:9000为后端服务器192.168.1.12的php-fpm进程监听的地址和端口
}

server {
    listen       80;
    server_name  blog.yilexun.com;
    root    /dragon/webapp/blog;
    index   index.html index.php;

    location ~* \.(ico|css|js|gif|jpe?g|png)$ {
        #error_page  404 /404.html;
        break;
    }
    if (!-e $request_filename) {
        rewrite ^(.*)\.(ico|css|js|gif|jpe?g|png)$ /404.html last;
        rewrite ^(.+)$ /index.php last;
        break;
    }
    location ~* \.php(\?|\/)? {
        fastcgi_pass_request_body off;
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        client_body_in_file_only clean;
        client_max_body_size 8m;
        fastcgi_param REQUEST_BODY_FILE $request_body_file;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_pass blog; #此处 "blog" 就是上面定义的 upstream 的名称
        fastcgi_index index.php;
    }
    location = /50x.html {
        root   html;
    }
}

  配置完后重启 nginx


分别在前端服务器和后端服务器上都要上传相同的目录文件, 我的实验结果是虽然用后端服务器解析PHP文件, 但是前后端服务器都必须有对应的PHP文件目录

  /dragon/webapp/blog/

    index.php

<?php
    echo '前端'; //三台服务器分别为 '前端', '后端1', '后端2'

 

访问 http://blog.yilexun.com/index.php, 每次刷新可以看到输出结果在'前端', '后端1', '后端2', 中不断变化, 表示配置成功

接下来会继续实现 nginx 服务器间的负载均衡, 敬请期待。。

posted on 2015-08-12 17:17  John_ABC  阅读(1470)  评论(0编辑  收藏  举报

导航